使用Linq返回最大计数列表

Fai*_*azi 6 linq list count max c#-4.0

使用C#和Linq如何返回具有最大大小/数量的List <....>?

Mar*_*ers 13

我假设您已经调用了一个列表集合,lists并且您希望返回此集合中具有最多元素的列表.如果是这样,试试这个:

var listWithLargestCount = lists.OrderByDescending(list => list.Count()).First();
Run Code Online (Sandbox Code Playgroud)

或者,如果这是LINQ to Objects并且您有很多列表,那么您可能希望尝试通过避免O(n log n)排序来获得更好的性能:

int maxCount = lists.Max(list => list.Count());
var listWithLargestCount = lists.First(list => list.Count() == maxCount);
Run Code Online (Sandbox Code Playgroud)


p.c*_*ell 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);
Run Code Online (Sandbox Code Playgroud)

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

  • 使用`.first()`而不是`.Take(1)`可能更好,因为那样你实际上会得到列表而不是包含列表的一个元素的列表. (3认同)