比较特定位置列表中的元素(C#)

时间:2017-02-23 18:13:42

标签: c# linq

鉴于两个列表A和B分别包含元素{1,2,3}和{4,5,6} ,我怎样才能找到第一个元素的最大值比较两个列表时。

我可以Max(A[0],B[0]) = 4来得到答案 但是我希望它是动态的,所以我可以将它扩展为100个列表 我想避免循环,所以我怎么能在一行中做到这一点?

2 个答案:

答案 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});
}