使用Linq返回具有最大计数的列表

使用Linq返回具有最大计数的列表,linq,list,c#-4.0,count,max,Linq,List,C# 4.0,Count,Max,使用C#和Linq如何返回最大大小/计数的列表 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。我假设您有一个名为lists的列表集合,并且希望返

使用C#和Linq如何返回最大大小/计数的列表

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

我假设您有一个名为
lists
的列表集合,并且希望返回此集合中元素最多的列表。如果是,请尝试以下方法:

var listWithLargestCount = lists.OrderByDescending(list => list.Count()).First();
或者,如果这是LINQ to Objects,并且您有很多列表,您可能希望通过避免O(n log n)排序来尝试此方法以获得更好的性能:

听起来好像您有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 ints1=新列表{10,20,30};
List ints2=新列表{1,2,3,4};
List ints3=新列表{100200};
var listWithMost=(新列表{ints1、ints2、ints3})
.OrderByDescending(x=>x.Count())
.采取(1)项措施;

现在您拥有了元素数量最多的列表。考虑一个场景,在这个场景中,有2个列表中的元素数量相同。你能进一步解释一下吗?例如,用输入和输出的例子。非常感谢!!非常全面的解决方案:)使用
.First()
可能比使用
.Take(1)
更好,因为这样您将实际获得列表,而不是包含列表的一个元素的列表。谢谢!我喜欢你的解决方案。感谢您在排序时间内考虑:)这将非常有用。。。
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);