分组由MM-dd-yyyy hh-mm'

时间:2017-01-16 15:52:53

标签: c# linq datetime

我有按日期,pid,bidc分组的分数记录,并使用SUM来汇总分数。原始字段类型是日期时间。通过按日期分组,我得到了不正确的聚合,因为我在给定的一天内在给定的小时 - 分钟内有多个集合。处理这个并通过' MM-dd-yyyy hh-mm&#汇总的正确方法是什么? 39;

 var scores = from ts in _context.Scores
              select ts;

 List<ScoreAgg> aggScores = scores.GroupBy(p => new { p.create_dt.Date, p.pid, p.bidc }).Select(g => new ScoreAgg()
            {
                pid = g.Key.pid,
                bidc = g.Key.bidc,
                score = g.Sum(s => s.weight),
                create_dt = g.Key.Date
            }).ToList<ScoreAgg>();

2 个答案:

答案 0 :(得分:1)

您可以使用DbFunction.CreateDateTime构建日期而无需秒:

gets

答案 1 :(得分:0)

您应该考虑在表格上创建一个计算列,如

DateOnly AS CONVERT(date, [Date])

GroupBy(p => new { p.create_dt.DateOnly, p.pid, p.bidc })

并索引DateOnly列以使聚合更快。如果你只是在你的groupby子句中进行转换,Sql将不会使用Date上定义的索引。