2012-07-09 66 views
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; 

從每個groupes選擇所有分:15, 16, 15
,然後選擇最高從上面的:16

我該怎麼用LINQ來做到這一點?
謝謝。

回答

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
var allMinX = ordered.Select(g => g.Min(s => s.X)); 
var minMax = allMinX.Max();