有没有办法比较两个列表然后返回包含最多项目的列表?最好使用snitzy和优雅的LINQ查询。
{{1}}
答案 0 :(得分:4)
这里不需要Linq:
List<Item> listWithMostItems = list1.Count > list2.Count ? list1 : list2;
设置条件以获取所需的列表,以防两个列表包含相同数量的元素
答案 1 :(得分:4)
如果您只有2个列表solution provided by Marrow最有效,但如果您有更多列表,请说IEnumerable<List<string>>
您最好使用MaxBy
from moreLINQ或对输入进行排序并采取排序集合中的第一个元素:
List<Item> listWithMostItems = lists.OrderByDescending(x => x.Count).First();
答案 2 :(得分:0)
List<Item> listWithMostItems = list2.Count > list1.Count ? list2 : list1;
答案 3 :(得分:0)
我不确定这个效率,但如果你想要选择大量列表中最长列表的东西,你应该编译一个主List< List<string> >
并按其长度排序。如果您有多个具有相同最大长度的列表并且您需要所有这些列表,则需要先GroupBy
。
var combinedLists = new List<List<string>> {list1, list2, list3, list4};
var groupsOfListsWithMaxLength = combinedLists
.GroupBy( l => l.Count)
.OrderByDescending(g => g.Key)
.First(); //null handle if needed with FirstOrDefault
foreach (var strList in groupsOfListsWithMaxLength )
{
//do stuff. The first group is a collection of all lists with the max length
}