2

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

  • 2012 年 12 月 13 日凌晨 2:00:00
  • 2012 年 12 月 13 日凌晨 4:00:00
  • 2012 年 12 月 13 日晚上 8:00:00
  • 2012 年 12 月 14 日下午 5:00:00
  • 2012 年 12 月 14 日凌晨 3:00:00
  • 2012 年 12 月 15 日上午 10:00:00

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

  • 2012 年 12 月 13 日晚上 8:00:00
  • 2012 年 12 月 14 日下午 5:00:00
  • 2012 年 12 月 15 日上午 10:00:00

我知道我可以使用 LINQ 做到这一点。我只是很难想清楚正在发生的事情。我想我必须从一个IEnumerable<IEnumerable<DateTime>>内部IEnumerable是所有具有相同日期的 s 列表中进行选择DateTime,然后我想通过降序对它们进行排序并选择第一个。

我很迷茫……

4

2 回答 2

9

试试这个:

var dates = list.GroupBy(dt => dt.Date).Select(g => g.Max());
于 2012-12-13T21:54:56.477 回答
1

你可以做这样的事情

var groups = dateList.GroupBy(date => date.Date)
                     .Select( grp => grp.Max( date => date.TimeOfDay));
于 2012-12-13T21:59:03.447 回答