使用C#和Linq我将如何返回List< ....>最大/数量?
答案 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
。