我有一个具有属性的类Person(dni,Name,lastname,Adate(dd / mm / yyyy))。 人员列表中填充了重复的项目。
12345 Jhon scofield 7/10/2015
24627 Liz Pereira 7/06/2014
32313 Brian O'conner 12/06/2012
12345 Jhon scofield 7/10/2016
32313 Brian O'conner 12/06/2015
我试试:
var x = ListFamily.GroupBy(p => p.dni).OrderByDescending(t => t.Adate)
.FirstOrDefault();
但是t.Adate无法识别
var y = ListFamily.OrderBy(z => z.Adate).First();
但这只返回一个家庭对象。
如何使用linq(lambda表达式)删除列表中最新日期的重复人物? 我的意思是,我想返回一个没有重复dnis的列表,并向该人显示最新日期
24627 Liz Pereira 7/06/2014
12345 Jhon scofield 7/10/2016
32313 Brian O'conner 12/06/2015
答案 0 :(得分:2)
您需要为每个组投放分组行,以便在OrderByDescensing
之后使用Select
和GroupBy
选择具有最高日期的记录:
var x = ListFamily.GroupBy(p => p.dni)
.Select(g=>g.OrderByDescending(x=>x.Adate)
.FirstOrDefault()
);
答案 1 :(得分:1)
你可以这样做:
var result= ListFamily.GroupBy(p => p.dni)
.Select(g=>g.OrderDescending(p=>p.Adate).FirstOrDefault());
您需要按降序对每个组进行排序以选择最新的组。
答案 2 :(得分:0)
当您GroupBy
获得可以使用的组时,您需要为每个组选择具有最新日期的条目:
ListFamily.GroupBy(p => p.dni, (_, g) => g.OrderByDescending(x => x.Adate).FirstOrDefault());