2015-12-05 146 views
0

我有一個列表「XYZarr」填充整數數組,如下所示。如何獲取數組列表中的特定列最大值?

 int[] intarr1 = new int[3]{ 1, 4, 15}; 
     int[] intarr2 = new int[3] { 10, 5, 8}; 
     int[] intarr3 = new int[3] { 7, 8, 12 }; 
     int[] intarr4 = new int[3] { 7, 8, 9 }; 

     List<int[]> XYZarr = new List<int[]>() { intarr1, intarr2, intarr3, intarr4 }; 

我想從列表中只有int [2]最大的三個索引(即第三個條目)。因此所得到的指標應該是列表中的「XYZarr」

我可以通過列表循環做的0,2,3,但我想使用LINQ這一點。我無法表達出該問題的妥善,but..i希望你明白我的意思

+0

「INT [2]是最大」 相比,INT [0]和int [1]?或者與其他數組中的int [2]進行比較? –

+0

@YacoubMassad Int [2]與其他陣列進行比較 – 911Rapid

回答

1

如何:

var result = Enumerable.Range(0, XYZarr.Count) 
    .OrderByDescending(i => XYZarr[i][2]) 
    .Take(3) 
    .ToList(); 
+0

不錯!我想我會用這個:) – 911Rapid

1

我假設「INT [2]是最大」意味着數組中的第三個要素是,數組中的最大元素。

方法如下:

var result = 
    XYZarr 
    .Select((list,index) 
     => new {list,index}) 
    .Where(x => x.list.Max() == x.list[2]) 
    .Select(x => x.index) 
    .ToList(); 

如果XYZarr包含超過3列,你只是想獲得3個結果,然後使用Take方法是這樣的:

var result = 
    XYZarr 
    .Select((list,index) 
     => new {list,index}) 
    .Where(x => x.list.Max() == x.list[2]) 
    .Select(x => x.index) 
    .Take(3) 
    .ToList(); 
+0

哇!超快速回復。謝謝!!!!! – 911Rapid

相關問題