我有一个int
s
int[] RowOfints = 1,2,3,4,5,6,7,8,9;
如果我输入例如值4
,我想从数组中删除1,2,3
并返回剩下的内容。
怎么做?
答案 0 :(得分:3)
如果您不想使用LINQ:
int[] newRowOfInts = new int[RowOfInts.Length - index];
Array.Copy(RowOfInts, index, newRowOfInts, 0, newRowOfInts.Length);
答案 1 :(得分:2)
在LINQ中使用Skip扩展名。
int[] newArray = RowOfInts.Skip(value).ToArray();
答案 2 :(得分:1)
我正在解释您想要找到值4
的索引的问题,然后从该索引位置开始一切。
var result = RowOfInts.SkipWhile(item => item != 4); // optionally, .ToArray()
result
将是由IEnumerable<int>
组成的4 .. 9
。如果你想要一个具体的数组,你也可以使用可选的ToArray()
扩展方法。如果数组中没有元素与给定条件匹配,则将获得零长度序列。
答案 3 :(得分:1)
好了,既然我更好地理解了这个问题,我会发布我的实际要求版本(再次强调对可读性的有效性):
private static int[] RemoveBeforeValue(int[] source, int value)
{
if (source == null)
return null;
int valueIndex = 0;
while (valueIndex < source.Length && source[valueIndex] != value)
valueIndex++;
if (valueIndex == 0)
return source;
int[] result = new int[source.Length - valueIndex];
Array.Copy(source, valueIndex, result, 0, result.Length);
return result;
}
OLD ANSWER
如果你想用硬(但效率高!)的方式做,那么你可以这样做(假设你想要删除小于提供值的值):
private static int[] RemoveValuesLessThan(int[] source, int newMinimum)
{
if (source == null)
return null;
int lessThanCount = 0;
for (int index = 0; index < source.Length; index++)
if (source[index] < newMinimum)
lessThanCount++;
if (lessThanCount == 0)
return source;
int[] result = new int[source.Length - lessThanCount];
int targetIndex = 0;
for (int index = 0; index < source.Length; index++)
if (source[index] >= newMinimum)
result[targetIndex++] = source[index];
return result;
}
答案 4 :(得分:0)
对于顺序的整数数组
public static void RemoveIntsBefore(int i)
{
int[] RowOfints = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
for (int k = 0; k < RowOfints.Length; k++)
{
if (RowOfints.ElementAt(k) < i)
{
RowOfints[k] = i;
}
}
RowOfints = RowOfints.Distinct().ToArray();
//this part is to write it on console
//foreach (var item in RowOfints)
//{
// Console.WriteLine(item);
//}
//Console.ReadLine();
}
使用这个数组你的数组不必是顺序的
public static void RemoveIntsBefore(int i)
{
int[] RowOfints = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 1,2 };
Console.WriteLine("OUTPUT");
foreach (var item in Enumerable.Range(i-1, RowOfints.Length + 1 - i).ToArray())
{
Console.WriteLine(RowOfints[item]);
}
Console.ReadLine();
}
答案 5 :(得分:-1)
使用System.Linq; ....
int[] RowOfints = {1,2,3,4,5,6,7,8,9};
int[] Answer = RowOfints.Where(x => x != 1 && x != 2 && x != 3).ToArray()