在C#中比较两个数组的每个元素并找出最小值

3

我有以下代码,可以对第一个元素起作用...但我无法弄清如何对数组上的所有元素进行操作... 预先感谢。

        int[] ListNumb1 = new int[] { 2, 4, 6 };
        int[] ListNumb2 = new int[] { 3, 1, 9 };


        if (ListNumb1[0] < ListNumb2[0])
        {
            Console.WriteLine(ListNumb1[0]);
        }
        else
            Console.WriteLine(ListNumb2[0]);




        Console.ReadLine();

把它放在一个循环里面 :D - A Farmanbar
你想要返回一个最小值的数组,还是只是输出它们? - see sharper
嗨,是的,我希望它以数组形式返回。谢谢。 - Daniel
1个回答

7
您可以使用 Enumerable.Zip 方法将2个集合(数组) zip 在一起,并使用 Math.Min 获取最小值。
var result = ListNumb1.Zip(ListNumb2, Math.Min)

完整示例

int[] ListNumb1 = new int[] { 2, 4, 6 };
int[] ListNumb2 = new int[] { 3, 1, 9 };

// Result will be an IEnumerbale<int>
var result = ListNumb1.Zip(ListNumb2, Math.Min)

Console.WriteLine(string.Join(",", result));

输出

2,1,6

注意:要获取数组输出,只需调用ListNumb1.Zip(ListNumb2,Math.Min).ToArray()


或者您可以使用传统的for循环

// Allocate the array
var results = new int[ListNumb1.Length];

// Iterate over each element in both arrays
for (var i = 0; i < ListNumb1.Length; i++)
   results[i] = Math.Min(ListNumb1[i], ListNumb2[i]);

注意2:这两个示例都假设数组长度相等,如果不是,则需要进行验证并采取相应措施。
附加资源:

1
我猜这意味着两个数组长度相等。问题中已经暗示了这一点。 - RoadRunner
1
@RoadRunner,好的,我还是会记下来的,谢谢。 - TheGeneral

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接