0

我有一个HallPlan包含字段的表():

Row, Seat, Width, Height, X, Y

并按以下方式分组集合Y

var ordered = hallPlans.GroupBy(s => s.Y).OrderBy(o => o.Key);

现在我想从每个组的所有最小 X 中选择最大 X。例如ordered包含三个组,我们有:

first group contains 3 records with X coordinates: 15, 50, 80;
second group contains: 16, 50,80;
and last group contains: 15, 40, 60;

从每个组中选择所有最小值:15, 16, 15
并从上面选择最大值:16

我怎样才能用 LINQ 做到这一点?
谢谢。

4

2 回答 2

1

您可以使用MinMax功能。

class HallPlan { public int X { get; set; } }

...

var groups = new[]{
                    new []{new HallPlan{X=15},new HallPlan{X=50},new HallPlan{X=80}},
                    new []{new HallPlan{X=16},new HallPlan{X=50},new HallPlan{X=80}},
                    new []{new HallPlan{X=15},new HallPlan{X=40},new HallPlan{X=60}}
                };

var maxmin = groups.Select(g => g.Min(h => h.X)).Max(); // result is 16

groups.Select(g => g.Min(h => h.X))HallPlan.X将从每组中选择.Max()最小值,然后返回其中最大值。

于 2012-07-09T09:56:47.877 回答
1
var allMinX = ordered.Select(g => g.Min(s => s.X));
var minMax  = allMinX.Max();
于 2012-07-09T09:58:47.967 回答