获取列表数组中的最大项目

时间:2013-12-15 09:06:31

标签: c# .net linq

我有列表数组(字符串类型):

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

e.g:

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

我需要编写一个LINQ操作,它将返回最大列表的数组索引。

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

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

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

我的版本:

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