C#如何计算两个DateTime的平均间隔并按日期分组输出独立列表
实现方案
你可以通过GroupBy按startDate的日期维度分组,再对每个分组单独计算平均间隔即可,实现代码如下:
- (可选)先定义输出结果的强类型模型:
public class DailyAverageResult { // 分组对应的日期 public DateTime Date { get; set; } // 当日平均间隔,单位为毫秒 public double AverageTime { get; set; } }
- 核心分组计算逻辑:
if (noNulls.Any()) { var dailyAverageList = noNulls // 按startDate的日期部分分组,Date属性会自动清零时分秒,实现按天分组 .GroupBy(data => data.startDate.Date) // 对每个分组计算平均值,投影为目标结构 .Select(group => new DailyAverageResult { Date = group.Key, AverageTime = group.Average(item => (item.endDate.Value - item.startDate).TotalMilliseconds) }) // 可按日期升序排序,和你示例的输出顺序一致 .OrderBy(res => res.Date) .ToList(); }
如果不需要强类型结果,也可以直接投影为匿名类,省略第一步的模型定义即可。
内容的提问来源于stack exchange,提问作者Rahul Sharma
相关产品推荐
相关产品推荐

