C# 使用linq筛选列表以删除重复项
我有一个具有属性(dni、姓名、姓氏、日期(dd/mm/yyyy))的类人。 人员列表中填充了重复的项目C# 使用linq筛选列表以删除重复项,c#,.net,linq,C#,.net,Linq,我有一个具有属性(dni、姓名、姓氏、日期(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
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();
但阿达特不被承认
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
您需要投影每个组的分组行,以使用
OrderByDescensing
withselect
afterGroupBy
选择日期最高的记录,如:
var x = ListFamily.GroupBy(p => p.dni)
.Select(g=>g.OrderByDescending(x=>x.Adate)
.FirstOrDefault()
);
您需要投影每个组的分组行,以使用
OrderByDescensing
withselect
afterGroupBy
选择日期最高的记录,如:
var x = ListFamily.GroupBy(p => p.dni)
.Select(g=>g.OrderByDescending(x=>x.Adate)
.FirstOrDefault()
);
您可以这样做:
var result= ListFamily.GroupBy(p => p.dni)
.Select(g=>g.OrderDescending(p=>p.Adate).FirstOrDefault());
您需要按降序排列每个组以选择最新的组 您可以这样做:
var result= ListFamily.GroupBy(p => p.dni)
.Select(g=>g.OrderDescending(p=>p.Adate).FirstOrDefault());
您需要按降序排列每个组以选择最新的组 当您
GroupBy
时,您会得到一个可枚举的组,因此您需要为每个组选择带有最新日期的条目:
ListFamily.GroupBy(p => p.dni, (_, g) => g.OrderByDescending(x => x.Adate).FirstOrDefault());
当您
GroupBy
时,您会得到可枚举的组,因此您需要为每个组选择具有最新日期的条目:
ListFamily.GroupBy(p => p.dni, (_, g) => g.OrderByDescending(x => x.Adate).FirstOrDefault());
试试这个:可能有用试试这个:可能有用