从linq查询中获取具有最大值的对象

时间:2011-02-28 22:37:53

标签: c#-4.0 linq-to-objects

我得到了以下linq查询:

var invadersOrderedInColumns = from i in invaders
                               group i by i.GetPosition().X;

这将命令具有相同X位置的入侵者。我要做的下一件事是从每个列中检索具有最高Y值的入侵者。

想象一下,如果您将每个入侵者都视为下图中的黑色斑点。这将代表上述linq查询后的入侵者。每个X = Value 都是关键。

Invaders Ordered in Columns

现在,从这些组(列)中的每一个,我想得到具有最高Y位置的入侵者(所以当您查看图片时,每个列的底部入侵者):

Get the highest Y value

如何使用Linq查询完成此操作?

1 个答案:

答案 0 :(得分:1)

我不太关心查询语法,但在扩展方法语法中,它看起来像这样。

var invadersOrderedInColumns = invaders
    .GroupBy(d => d.GetPosition().X)
    .Select(d => d.OrderByDescending(y => y.GetPosition().Y).First());