我需要安排我的列表,以便我只拥有最大对象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会很好......
答案 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())