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

时间:2014-11-19 16:14:33

标签: 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 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 = { 19, 24, 28, 33 };
int[] Y = { 131, 132, 150, 170 };

如何进行并删除相同值的多个实例,比如说

int[] X = { 14, 19, 24, 28, 33 };
int[] Y = { 90, 90, 132, 150, 170 };

我猜测它必须是while循环,但却无法获得循环或概念。它不是要避免重复。它关于删除<100的所有值。我想从X数组中删除小于100的值,例如:

int[] Y = { 90, 90, 132, 150, 170 };

应该是

int[] Y = { 132, 150, 170 };

由于我们要删除X[0] X[1],我们必须删除Y[0] Y[1]

int[] X = { 24, 28, 33 };

因为我必须使用此数组在我的表单中创建Chart。我希望Why明白这一点。

2 个答案:

答案 0 :(得分:2)

Distinct<TSource> method怎么样?

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();

结果输出:Distinct values: 90 132 150 170

答案 1 :(得分:2)

  

我正在尝试删除Y中低于100的值的实例以及X中具有相同索引号的相应值。即我的代码删除Y [0]和X [0]

以下代码获取Y中小于100的所有元素的索引(减去X中不存在的索引,假设X可能是Y短于X),然后从Yvar 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); } 删除所有这些索引位置的元素:

{{1}}

收藏品最终会以{24,28,33}和{132,150,170}结尾。