2

如果我有一个包含 PointF 的列表,例如:

[10.5, 5.5]
[8.5, 4.5]
[10.5, 6.5]
[5.5, 10.5]
[10.5, 3.5]

是否有可能让 LINQ 先找到 x 的最大值,然后从这些最大 X 值中找到 Y 的最大值以产生如下结果:

[10.5, 6.5] 
4

2 回答 2

8
points.OrderBy(i => i.x).ThenBy(i => i.y).Last();

或者如果您更喜欢 LINQ 查询语法:

(from point in points
orderby point.x, point.y 
select point).Last();
于 2012-09-19T23:27:09.173 回答
2

按 x 值分组,取最高组并选择该组中最高的 y 值。

PointF maxPoint = points
        .GroupBy(p => p.X)
        .OrderByDescending(g => g.Key)
        .Take(1)
        .Select(g => new PointF(g.Key, g.Max(p => p.Y)))
        .First();
于 2012-09-19T23:12:37.133 回答