我有一个对象列表,为简化起见,我们只说每个对象有2个字段ID和日期。
可以有2个或更多具有相同ID和不同日期的项目。 我想过滤它们并返回一个列表,其中ID字段是唯一的,并且它们具有最新的日期。
例如
输入:
(1,6 / 12/14)
(1,5 / 16/14)
(1,5 / 13/14)
(2,5 / 10/14)
(2,5 / 12/14)
输出:
(1,6 / 12/14)
(2,5 / 12/14)
我期待的是:
myList.Where(东西).toList();
但是找不到办法:(
尝试:
caseT.Surveys.GroupBy(item => item.ID).Select(grouping => new Survey() {ID = grouping.Key,TimeOfSurveyOpen = grouping.Max(item => item.TimeOfSurveyOpen)})ToList();
它返回相同的内容,就像没有过滤一样。
答案 0 :(得分:1)
我建议按ID进行分组,然后将每个分组映射到{Id,Max(date)}
伪代码,因为我没有IDE:
myList
.GroupBy(item => item.Id)
.Select(grouping => new Item(grouping.Key, grouping.Max(item => item.Date)))