转载这篇文章主要是为了记录LINQ的用法。
以下为原文:
让我说我有这个数组,
int[] numbers = {1, 3, 4, 9, 2};
如何通过“name”删除元素? ,让我们说数字4?
甚至ArrayList没有帮助删除?
string strNumbers = " 1, 3, 4, 9, 2";
ArrayList numbers = new ArrayList(strNumbers.Split(new char[] { ',' }));
numbers.RemoveAt(numbers.IndexOf(4));
foreach (var n in numbers)
{
Response.Write(n);
}
最佳答案
如果你想删除所有4的实例,而不需要知道索引:
LINQ:(.NET Framework 3.5)
int[] numbers = { 1, 3, 4, 9, 2 };
int numToRemove = 4;
numbers = numbers.Where(val => val != numToRemove).ToArray();
非LINQ:(.NET Framework 2.0)
static bool isNotFour(int n)
{
return n != 4;
}
int[] numbers = { 1, 3, 4, 9, 2 };
numbers = Array.FindAll(numbers, isNotFour).ToArray();
如果你只想删除第一个实例:
LINQ:(.NET Framework 3.5)
int[] numbers = { 1, 3, 4, 9, 2, 4 };
int numToRemove = 4;
int numIndex = Array.IndexOf(numbers, numToRemove);
numbers = numbers.Where((val, idx) => idx != numIndex).ToArray();
非LINQ:(.NET Framework 2.0)
int[] numbers = { 1, 3, 4, 9, 2, 4 };
int numToRemove = 4;
int numIdx = Array.IndexOf(numbers, numToRemove);
List<int> tmp = new List<int>(numbers);
tmp.RemoveAt(numIdx);
numbers = tmp.ToArray();
编辑:如果你还没有想到它,如Malfist指出,你需要针对.NET Framework 3.5为了LINQ代码示例工作。如果你定位2.0,你需要参考非LINQ的例子。