从分组集合中选择

时间:2012-07-09 09:48:47

标签: c# linq

我有一个表格(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执行此操作?
感谢。

2 个答案:

答案 0 :(得分: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()将返回其中的最大值。

答案 1 :(得分:1)

var allMinX = ordered.Select(g => g.Min(s => s.X));
var minMax  = allMinX.Max();