C# 4.0 从按linq分组的查询中获取最大值的对象

C# 4.0 从按linq分组的查询中获取最大值的对象,c#-4.0,linq-to-objects,C# 4.0,Linq To Objects,我得到了以下linq查询: var invadersOrderedInColumns = from i in invaders group i by i.GetPosition().X; 这将命令入侵者使用相同的X位置。接下来我要做的是从这些列中检索Y值最高的入侵者 想象一下,如果你在下图中将每个入侵者看作一个黑色的斑点。这将表示上述linq查询之后的入侵者。每个X=值都是关键 现在,从每个组(列)中,我想得到Y位置最高的入侵者(

我得到了以下linq查询:

var invadersOrderedInColumns = from i in invaders
                               group i by i.GetPosition().X;
这将命令入侵者使用相同的X位置。接下来我要做的是从这些列中检索Y值最高的入侵者

想象一下,如果你在下图中将每个入侵者看作一个黑色的斑点。这将表示上述linq查询之后的入侵者。每个X=值都是关键

现在,从每个组(列)中,我想得到Y位置最高的入侵者(当你看图片时,每个列的底部入侵者):


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

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

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