如何从日期列表中选择每日最新时间列表

时间:2012-12-13 21:51:15

标签: c# linq

这个问题可能听起来非常令人困惑,但很难描述我想做什么。基本上,我有一个DateTime对象列表,我想创建一个新列表,其中包含列表中的对象,这些对象代表列表中表示的每个日期的最新时间。例如,假设我有一个包含这些DateTime s的列表:

  • 12/13/2012 2:00:00 AM
  • 12/13/2012 4:00:00 AM
  • 12/13/2012 8:00:00 PM
  • 12/14/2012 5:00:00 PM
  • 12/14/2012 3:00:00 AM
  • 12/15/2012 10:00:00 AM

我希望我的结果列表包含以下内容:

  • 12/13/2012 8:00:00 PM
  • 12/14/2012 5:00:00 PM
  • 12/15/2012 10:00:00 AM

我知道我可以使用LINQ来做到这一点。我只是很难把想法包围在发生的事情中。我想我必须从IEnumerable<IEnumerable<DateTime>>中选择内部IEnumerableDateTime的列表,这些列表都具有相同的日期,然后我想通过降序排序并选择第一个。

我很失落......

2 个答案:

答案 0 :(得分:9)

试试这个:

var dates = list.GroupBy(dt => dt.Date).Select(g => g.Max());

答案 1 :(得分:1)

你可以做这样的事情

var groups = dateList.GroupBy(date => date.Date)
                     .Select( grp => grp.Max( date => date.TimeOfDay));