使用Linq返回最大计数列表

时间:2010-11-14 20:13:06

标签: linq list c#-4.0 count max

使用C#和Linq我将如何返回List< ....>最大/数量?

3 个答案:

答案 0 :(得分:13)

我假设您有一个名为lists的列表集合,并且您希望返回此集合中具有最多元素的列表。如果是这样,试试这个:

var listWithLargestCount = lists.OrderByDescending(list => list.Count()).First();

或者,如果这是LINQ to Objects并且您有 lot 列表,则可能需要尝试通过避免O(n log n)排序来获得更好的性能:

int maxCount = lists.Max(list => list.Count());
var listWithLargestCount = lists.First(list => list.Count() == maxCount);

答案 1 :(得分:6)

听起来就像你有n个列表一样,并且你希望挑出一个数量最多的那个。

试试这个:

List<int> ints1 = new List<int> { 10, 20, 30 };
List<int> ints2 = new List<int> { 1, 2, 3, 4 };
List<int> ints3 = new List<int> { 100, 200 };

var listWithMost = (new List<List<int>> { ints1, ints2, ints3 })
                   .OrderByDescending(x => x.Count())
                   .Take(1);

现在,您拥有包含最多元素的List。考虑有2个列表具有相同顶级元素的场景。

答案 2 :(得分:1)

int[] numbers = new int[] { 1, 54, 3, 4, 8, 7, 6 };
var largest = numbers.OrderByDescending(i => i).Take(4).ToList();
foreach (var i in largest)
{
    Console.WriteLine(i);
}

用定义“最大尺寸/数量”的函数替换i => i