比较两个数组的每个项目C#

时间:2016-05-21 07:46:27

标签: c# arrays if-statement

我有两个数组:

int[] oddArr = { 11, 9, ... };

int[] evenArr = {4, 2, 8, ... };

我想检查 oddArr 中的每件商品是否大于 evenArr 中的每件商品,然后我们应该做一些逻辑。

像: if(11 > 4 && 11 > 2 && 11 > 8 && 9 > 4 && 9 > 2 && 9 > 8 && ...)

我试过这样的事情:

for (int i = 0; i < oddArr.Length; i++)
{
    for (int j = 0; j < evenArr.Length; j++)
    {
        if (oddArr[i] > evenArr[j])
        {

        }
    }
}

3 个答案:

答案 0 :(得分:12)

我会以不同的方式思考问题 - 因为oddArr中的所有内容都要大于evenArr中的所有内容,那么oddArr最小必须是大于evenArr最大

if (oddArr.Min() > evenArr.Max())

using需要System.Linq指令才能引入Minmax扩展方法。)

答案 1 :(得分:2)

如果您不想使用Linq库,那么您可以像

那样使用它
int minOdd = oddArr[0];
for (int i = 1; i < oddArr.Length; i++)
{
    if(minOdd>oddArr[i])
        minOdd = oddArr[i];
}

int maxEven = evenArr[0]
for (int j = 0; j < evenArr.Length; j++)
{
    if (maxEven > evenArr[j])
        maxEven = evenArr[j];
}

if(minOdd>maxEven)
{
//do someting
}

逻辑上,如果oddArr的每个元素都大于evenArr的每个元素,那么oddArr的最小数量将大于evenArr的最大数量。

答案 2 :(得分:1)

虽然Jon Skeet的答案是更好的解决方案,但您仍然可以使用LINQ将oddArr中的每个项目与evenArr中的每个项目进行比较。方法如下:

var result = oddArr.All(oddItem => evenArr.All(evenItem => evenItem < oddItem));

if(result){
    // every item from oddArr > every item from evenArr
    // Do something
}