如果我有一个包含 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]
points.OrderBy(i => i.x).ThenBy(i => i.y).Last();
或者如果您更喜欢 LINQ 查询语法:
(from point in points
orderby point.x, point.y
select point).Last();
按 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();