2013-12-15 50 views
0

我列出的阵列(字符串类型):获得最大的项目列表中的数组

List<string>[] nodesAtLevel = new List<string>[20]; 

如:

[0] - List: "Hi", "There" 
[1] - List: "Hi", "There", "Someone" 
[2] - List: "Hi" 

我需要写一个LINQ操作,将返回的数组索引最大的名单。

关于上面的例子,LINQ操作应该返回1(因为它有3个项目)。

我知道我应该使用“Where”和“Max”函数,但我无法弄清楚如何。

回答

6

使用此查询。首先,您要创建一个对象集合,该对象集合包含有关数组中列表的索引和其项目数的信息。然后,订购Count的新集合,选择第一个或最后一个(取决于您订购集合的方式)并获取索引。

var result = nodesAtLevel.Select((l, i) => new { Count = l.Count, Index = i }) 
         .OrderByDescending(x => x.Count) 
         .First() 
         .Select(x => x.Index); 
1

我的版本:

var max = nodesAtLevel.Select((l, i) => new { index = i, list = l }) 
         .OrderBy(x => x.list.Count) 
         .Last().index;