订单列表由Distinct和Object属性Larget值

时间:2013-10-06 13:20:10

标签: c# linq lambda

我需要安排我的列表,以便我只拥有最大对象X属性的不同对象项。例如:我有这个对象列表:

 MyList :

object[0] :
name: dani
x:3;

object[1] :
name:dani;
x:1;

object[2]:
name:joey;
x:5;

object[3]:
name:joey;
x:1;

我需要找到具有最大x值的不同对象,所以我会得到包含2个对象的新列表:

 new List:

object[0] :name:dani;x:3

object[1] :name:joei;x:5

如何找到新列表? Lambda ex会很好......

2 个答案:

答案 0 :(得分:1)

myObjects.GroupBy(o => o.name).Select(g => g.OrderByDescending(o => o.x).First())

由于您没有提供您正在使用的Linq提供商的详细信息,因此这是最佳的一般方法。您可以使用morelinq中的MaxBy扩展方法在Linq2Objects中加快速度:http://code.google.com/p/morelinq/

myObjects.GroupBy(o => o.name).Select(g => g.MaxBy(o => o.x))

答案 1 :(得分:0)

使用此代码:

mylist.GroupBy(o => o.name).Select(g => g.OrderByDescending(o => o.x).First())