当前位置: 首页 - 编程技术 - 文章正文

如何从一个数组中删除一个元素在C#

xiaoqihv

转载这篇文章主要是为了记录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的例子。

文章地址:https://wenmayi.cn/post/870.html