列表过滤表达式。精简版

时间:2014-06-12 21:24:02

标签: c# list lambda

我有一个对象列表,为简化起见,我们只说每个对象有2个字段ID和日期。

可以有2个或更多具有相同ID和不同日期的项目。 我想过滤它们并返回一个列表,其中ID字段是唯一的,并且它们具有最新的日期。

例如

输入:

ID,DATE

(1,6 / 12/14)

(1,5 / 16/14)

(1,5 / 13/14)

(2,5 / 10/14)

(2,5 / 12/14)

输出:

ID,DATE

(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();

它返回相同的内容,就像没有过滤一样。

1 个答案:

答案 0 :(得分:1)

我建议按ID进行分组,然后将每个分组映射到{Id,Max(date)}

伪代码,因为我没有IDE:

myList
   .GroupBy(item => item.Id)
   .Select(grouping => new Item(grouping.Key, grouping.Max(item => item.Date)))