Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何循环从同一数组中删除一个值的所有实例?_C# - Fatal编程技术网

C# 如何循环从同一数组中删除一个值的所有实例?

C# 如何循环从同一数组中删除一个值的所有实例?,c#,C#,我的表单有两个不同的数组,如下所示: int[] X = { 14, 19, 24, 28, 33 }; int[] Y = { 90, 131, 132, 150, 170 }; 我可以使用以下方法从两个数组中删除同一索引号中的一个值: int maxValue = Y[0]; for (int i = 1; i < Y.Length; i++) { if (Y[i] > maxValue) maxValue = Y[i]; // max value

我的表单有两个不同的数组,如下所示:

int[] X = { 14, 19, 24, 28, 33 };
int[] Y = { 90, 131, 132, 150, 170 };
我可以使用以下方法从两个数组中删除同一索引号中的一个值:

 int maxValue = Y[0];
 for (int i = 1; i < Y.Length; i++)
 {
      if (Y[i] > maxValue)
      maxValue = Y[i]; // max value in the array.

 }

 if (maxValue < 100)                                    
 {
     int indexY = IndexOfInt(Y, maxValue);
     Y = Y.Except(new int[] { maxValue }).ToArray();
     List<int> Z = X.ToList();
     Z.RemoveAt(indexY);
     X = Z.ToArray();
 }

static int IndexOfInt(int[] arr, int value) //finds the index number  
        {
            for (int i = 0; i < arr.Length; i++)
            {
                if (arr[i] == value)
                {
                    return i;
                }
            }
            return -1;

        }
比如说,我如何着手删除相同值的多个实例

int[] X = { 14, 19, 24, 28, 33 };
int[] Y = { 90, 90, 132, 150, 170 };
我猜它必须是一个while循环,但就是不能得到正确的循环或概念。这不是为了避免重复。它是关于删除所有的值,那么

结果输出:不同的值:90 132 150 170

结果输出:不同值:90 132 150 170

我正在尝试删除Y中小于100的值和X中具有相同索引号的对应值的实例。也就是说,我的代码删除了Y[0]和X[0]

以下代码获取Y中小于100的所有元素的索引减去X中不存在的索引,假设X可能小于Y,然后从X和Y中删除所有这些索引位置的元素:

这些藏品将以{24,28,33}和{132,150,170}结尾

我正在尝试删除Y中小于100的值和X中具有相同索引号的对应值的实例。也就是说,我的代码删除了Y[0]和X[0]

以下代码获取Y中小于100的所有元素的索引减去X中不存在的索引,假设X可能小于Y,然后从X和Y中删除所有这些索引位置的元素:


这些集合将以{24,28,33}和{132,150,170}结尾。

@Grant-Winney-Yes-List是fine,HashSet呢?甚至是一个分类集?如果您想避免重复,这似乎是一个不错的选择。您想在这里做什么?X和Y有什么关系?应该删除哪些值?为什么要使用临时列表Z,而您所做的只是删除一个项目,然后重新分配给同一个列表?@Grant Winney Yes list很好HashSet呢?甚至是一个分类集?如果您想避免重复,这似乎是一个不错的选择。您想在这里做什么?X和Y有什么关系?应该删除哪些值?为什么要使用临时列表Z,而您所做的只是删除一个项目,然后重新分配给同一个列表?但是您没有删除Xlist中的索引。@Edmund,那不行。。由于我必须在我的项目中使用Y.Length和X.Length,您的代码将为Y.Length返回4,我试图实现的是,它应该为Y.Length返回132 150 170和4。ps:这是WinForm解决方案。@envyM6您一直提到这是WinForms,但您发布的问题与WinForms无关。这只是c代码。@envyM6请编辑您的问题,并解释您想做什么。很明显,您想要的不仅仅是从整数数组中消除重复项,但我不知道还有什么。@EdmundSchweppe Question Updated您没有删除Xlist中的索引。@Edmund那不行。。由于我必须在我的项目中使用Y.Length和X.Length,您的代码将为Y.Length返回4,我试图实现的是,它应该为Y.Length返回132 150 170和4。ps:这是WinForm解决方案。@envyM6您一直提到这是WinForms,但您发布的问题与WinForms无关。这只是c代码。@envyM6请编辑您的问题,并解释您想做什么。很明显,你想要的不仅仅是从一个整数数组中消除重复项,但我说不出更多的是什么。@EdmundSchweppeUpdated@Grant不,我正在尝试删除Y中小于100的值和X中具有相同索引号的相应值的实例。也就是说,我的代码删除了Y[0]和X[0]作品但是我必须这样做才能创建图表int[]A=X.ToArray;int[]B=Y.ToArray;int Z=A.长度;对于int i=0;iint[] X = { 14, 19, 24, 28, 33 }; int[] Y = { 90, 90, 132, 150, 170 };
int[] Y = { 90, 90, 132, 150, 170 };
int[] Y = { 132, 150, 170 };
int[] X = { 24, 28, 33 };
int[] Y = { 90, 90, 132, 150, 170 };
Y = Y.Distinct().ToArray();
Console.Write("Distinct values: ");
foreach(int d in Y)
{
    Console.Write("{0} ",d);
}
Console.WriteLine();
var X = new List<int> { 14, 19, 24, 28, 33 };
var Y = new List<int> { 90, 90, 132, 150, 170 };

var indexes = Y.Select((element, index) => new {element, index})
               .Where(item => item.element < 100
                              && item.index < X.Count)
               .Select(item => item.index)
               .OrderByDescending(i => i)
               .ToList();

foreach (var index in indexes)
{
    X.RemoveAt(index);
    Y.RemoveAt(index);
}