2010-11-12 47 views
2

有一个更好的方法!查询对象列表以查找具有最多项目的星期几

我有一堆存储在列表中的日志记录。每个日志记录都有一个CreateDate字段,我想要做的是找到一种有效的方式来查询List对象,以查找大多数日志记录(星期一,星期二等)的星期几。

我在想,这可以使用Linq完成,但我不太了解Linq。这可能是我必须通过为每个特定日计算一次,然后将它们相互比较以找出日志最多的日子,但我希望有人能够向我展示我一个很酷的方式来做到这一点。

谢谢。

回答

1
Loglist.GroupBy(log => log.CreateDate) 
    .Select(list => new { DayOfWeek = list.Key.DayOfWeek, Count = list.Count()}) 
    .OrderByDescending(list=>list.Count); 

这将以降序返回(DayOfWeek,Count)的列表。如果您只需要每周最多的天数,请在上面的列表末尾应用.First()

+0

这将返回一个非常长的名单与很多天!您可能希望将“DayOfWeek”移至您的“GroupBy”,而不是“Select”。 – diceguyd30 2010-11-12 13:28:56

+0

感谢你们俩。 xandy的答案返回了一个星期几的列表,计数为1,diceguyd30的评论将'DayOfWeek'移动到GroupBy聚合列表。 这里是为我工作的代码: VAR weekDaySummary = someLogs.GroupBy(日志=> log.CreateDate.Value.DayOfWeek) 。选择(名单=>新{平日= list.Key,计数=名单。 Count()}) .OrderByDescending(list => list.Count); – fynnbob 2010-11-12 17:28:34