鉴于两个列表A和B分别包含元素{1,2,3}和{4,5,6} ,我怎样才能找到第一个元素的最大值当比较两个列表时。
我可以Max(A[0],B[0])
= 4来得到答案
但是我希望它是动态的,所以我可以将它扩展为100个列表
我想避免循环,所以我怎么能在一行中做到这一点?
答案 0 :(得分:1)
假设您从列表数组(或列表列表或其他内容)开始:
List<int>[] lists = ....
LINQ从每个列表中获取第一项:
var firstItems = lists.Select(lst => lst[0]);
LINQ获取最大值:
var max = firstItems.Max();
合并为一行:
var max = lists.Select(lst => lst[0]).Max();
答案 1 :(得分:0)
如果您使用params
,则可以传递任意数量的int
数组。
using System.Linq; // top of code file
public int MaxFirst(params int[][] intArrays)
{
return intArrays.Where(x => x != null && x.Length > 0).Max(x => x[0]);
}
注意:Where
表达式是防止空数组和传入的空引用
测试代码
public void Test()
{
var largest = MaxFirst(new int[] {1, 2, 3}, new int[] {4, 5, 6});
}