Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用linq筛选列表以删除重复项_C#_.net_Linq - Fatal编程技术网

C# 使用linq筛选列表以删除重复项

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

我有一个具有属性(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
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
with
select
after
GroupBy
选择日期最高的记录,如:

var x = ListFamily.GroupBy(p => p.dni)
                  .Select(g=>g.OrderByDescending(x=>x.Adate)
                              .FirstOrDefault()
                         );

您需要投影每个组的分组行,以使用
OrderByDescensing
with
select
after
GroupBy
选择日期最高的记录,如:

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());
试试这个:可能有用试试这个:可能有用