使用Linq返回具有最大计数的列表
使用C#和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的列表集合,并且希望返
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);