Linq 查询对象列表以查找一周中项目最多的日期

Linq 查询对象列表以查找一周中项目最多的日期,linq,list,datetime,dayofweek,Linq,List,Datetime,Dayofweek,一定有更好的办法 我有一堆日志记录存储在一个列表中。每个日志记录都有一个CreateDate字段,我试图找到一种有效的方法来查询List对象,以查找日志记录最多的一周中的哪一天(星期一、星期二等) 我认为这可以用Linq实现,但我对Linq了解不够。也许我需要花很长的时间来计算每一天的数量,然后相互比较,找出日志最多的那一天,但我希望有人能给我展示一种很酷的方法 谢谢 Loglist.GroupBy(log => log.CreateDate) .Select(list =>

一定有更好的办法

我有一堆日志记录存储在一个列表中。每个日志记录都有一个CreateDate字段,我试图找到一种有效的方法来查询List对象,以查找日志记录最多的一周中的哪一天(星期一、星期二等)

我认为这可以用Linq实现,但我对Linq了解不够。也许我需要花很长的时间来计算每一天的数量,然后相互比较,找出日志最多的那一天,但我希望有人能给我展示一种很酷的方法

谢谢

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

这将按降序返回(DayOfWeek,Count)列表。如果您只需要每周的最大计数日,请在上述列表的末尾应用
.First()

这将返回一个包含大量天数的非常长的列表!您可能想将“DayOfWeek”改为“GroupBy”,而不是“Select”。多亏了你们两位。xandy的回答返回了一个包含一周中天数的列表,计数为1,然后Dickey30的注释将“DayOfWeek”移动到GroupBy汇总的列表中。下面是对我有用的代码:var weekDaySummary=someLogs.GroupBy(log=>log.CreateDate.Value.DayOfWeek);