我的表单有两个不同的数组,如下所示:
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
明白这一点。
答案 0 :(得分:2)
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
),然后从Y
和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);
}
删除所有这些索引位置的元素:
{{1}}
收藏品最终会以{24,28,33}和{132,150,170}结尾。