LINQ解决方案,用于具有两个或更多相同数据的最高行

时间:2016-11-28 02:40:06

标签: c# linq lambda

我遇到这种情况:

Data: 28/11/2016 00:34:55 Idade: 20 Name:WSA
Data: 28/11/2016 00:34:55 Idade: 21 Name:WSA
Data: 09/08/2007 00:00:00 Idade: 10 Name:Wdddd
Data: 09/08/2007 00:00:00 Idade: 11 Name:Wdddd

我不知道如何解决每个名字选择最高的“Idade”值,对于上面的例子我需要这个作为解决方案

Data: 28/11/2016 00:34:55 Idade: 21 Name:WSA
Data: 09/08/2007 00:00:00 Idade: 11 Name:Wdddd

这是我的代码:

var persons = new List<Person>()
{
    new Person { Data = DateTime.Now, Idade = 20 , Name = "WSA" },
    new Person { Data = DateTime.Now, Idade = 21 , Name = "WSA" },
    new Person { Data = new DateTime(2007,08,09), Idade = 10 , Name = "Wdddd" },
    new Person { Data = new DateTime(2007,08,09), Idade = 11 , Name = "Wdddd" },
};

///TODO LINQ here
var _persons = from p in persons select p;

foreach (var item in _persons)
{
    Console.WriteLine(string.Format("Data: {0} Idade: {1} Name:{2}", item.Data, item.Idade, item.Name));
} 

1 个答案:

答案 0 :(得分:0)

使用group by

from p in persons
group p by p.Name into grp
select grp.OrderByDescending(x => x.Idade).First();