0

我需要安排我的列表,这样我就只有具有最大对象 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 会很好...

4

2 回答 2

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))
于 2013-10-06T13:22:00.060 回答
0

使用此代码:

mylist.GroupBy(o => o.name).Select(g => g.OrderByDescending(o => o.x).First())
于 2013-10-06T13:26:11.950 回答