C# 对照两个单独的数组值进行检查,并抓取最小的一个值以将新数组值插入到新数组中

C# 对照两个单独的数组值进行检查,并抓取最小的一个值以将新数组值插入到新数组中,c#,arrays,loops,if-statement,conditional,C#,Arrays,Loops,If Statement,Conditional,我正在处理数组和条件语句,现在几乎没有什么损失,希望得到一些输入 因此,我创建了两个数组 int[] one = new int[] { 4160414, 6610574, 2864453, 9352227, -4750937, -3132620, 2208017, -2226227, -8415856, -9834062, -3401569, 7581671, 8068562, 7520435, -9277044, -7821114, -3095212, 96

我正在处理数组和条件语句,现在几乎没有什么损失,希望得到一些输入

因此,我创建了两个数组

int[] one = new int[] { 
    4160414, 6610574, 2864453, 9352227, -4750937, -3132620, 2208017,  
    -2226227, -8415856, -9834062, -3401569, 7581671, 8068562, 7520435,  
    -9277044, -7821114, -3095212, 966785, 6873349, -8441152, -7015683, 
    -6588326, -282013, 4051534, 9930123, -3093234 };

int[] two = new int[] { 
    1099626, 6083415, 8083888, -8210392, 2665304, -8710738, -8708241, 
    8859200, -1255323, 5604634, 2921294, -7260228, 7261646, 1137004, 
    5805162, 4883369, 8789460, 9769240, 319012, -7877588, -1573772, 
    5192333, 1185446, 1302131, 4217472, -3471445};
下一步我想的是,我必须循环遍历每个数组

for (int i = 0; i < one.Length; i++)
{
    int xValue = one[i];

    for (int j = 0; j < two.Length; j++)
    {
        int yValue = two[j];
    }
}
for(int i=0;i<1.Length;i++)
{
int xValue=1[i];
对于(int j=0;j<2.Length;j++)
{
int y值=两[j];
}
}
现在我有了每个数组的索引,我需要检查xValue的索引是否小于yValue的索引

if (xValue < yValue)
{
   // dO SOMETHING HERE
}
if (yValue < xValue)
{
  // Do Something HERE
}
if(xValue
我感到困惑的地方是C#根据我的理解,不能将新值推送到数组中,它需要是数组的新实例并进行复制

所以我试着去做

if (xValue < yValue)
{
  Array.Copy(one, x, 13);
}
if (yValue < xValue)
{
 Array.Copy(two, x, 13)
}
if(xValue
两个数组都有26个值,因此需要创建一个13的新数组来插入已检查的值,但array.Copy似乎无法使数组超出检查下限

我只是对在索引处检查两个数组的值感到困惑,然后获取检查值中的最小值,然后获取该小值并将其插入新数组,然后使用foreach循环对其进行迭代并将值打印到控制台。FacePalm

您可以使用LINQ来实现这一点:

int[] smallest = one.Zip(two, (o, t) => Math.Min(o,t)).ToArray();
本质上,
Zip
将为lambda表达式提供这两个项,允许您以自己认为合适的方式组合它们。在这种情况下,我们只需选择最小值并返回它

您可以使用LINQ来实现这一点:

int[] smallest = one.Zip(two, (o, t) => Math.Min(o,t)).ToArray();
本质上,
Zip
将为lambda表达式提供这两个项,允许您以自己认为合适的方式组合它们。在这种情况下,我们只需选择最小值并返回它


基本上,声明新数组时需要定义其大小。使其大小与
one
相同。然后通过比较索引
i
处每个数组中的项目,在每次迭代中从
one
two
中添加最小的项目

int[] smallest = new int[one.Length]; 

for (int i = 0; i < one.Length; i++)
{
    if (one[i] < two[i])
    {
        smallest[i] = one[i];
    }
    else 
    {
        smallest[i] = two[i];
    }
}
int[]最小值=新的int[1.Length];
for(int i=0;i<1.Length;i++)
{
如果(一[i]<二[i])
{
最小的[i]=一个[i];
}
其他的
{
最小的[i]=两个[i];
}
}

基本上,声明新数组时需要定义其大小。使其大小与
one
相同。然后通过比较索引
i
处每个数组中的项目,在每次迭代中从
one
two
中添加最小的项目

int[] smallest = new int[one.Length]; 

for (int i = 0; i < one.Length; i++)
{
    if (one[i] < two[i])
    {
        smallest[i] = one[i];
    }
    else 
    {
        smallest[i] = two[i];
    }
}
int[]最小值=新的int[1.Length];
for(int i=0;i<1.Length;i++)
{
如果(一[i]<二[i])
{
最小的[i]=一个[i];
}
其他的
{
最小的[i]=两个[i];
}
}

那么您有两个数组,每个数组有26个项目,您想要一个数组,每个数组有13个项目?你能解释更多关于逻辑的内容吗(最好是用一些工作过的例子或图表)?目前,当比较两个数组中的相同索引时,似乎应该得到一个包含最小值的26项数组,我应该得到两个数组中最小的26个新数组,所以如果我比较ArrayOne,第一个值是2,然后检查第二个数组,该值是3,那么值2将被抓取并插入到一个新数组中。所以你有两个数组,每个数组有26个项目,你想要一个数组,每个数组有13个项目?你能解释更多关于逻辑的内容吗(最好是用一些工作过的例子或图表)?目前,当比较两个数组中的相同索引时,似乎应该得到一个包含最小值的26项数组,我应该得到两个数组中最小数字的26个新数组,因此如果我比较ArrayOne,第一个值是2,然后检查第二个数组,该值是3,那么值2将被抓取并插入到一个新数组中。我永远找不到zip的用途+1我喜欢这个,谢谢你和我分享!感谢你,我从来没有发现拉链的用处+1我喜欢这个,谢谢你和我分享!谢谢你和我分享这个!现在更有意义了谢谢你和我分享!现在更有意义了