c# - C#中如何删除数组中的元素

标签 c# .net arrays

假设我有这个数组,

int[] numbers = {1, 3, 4, 9, 2};

如何通过“名称”删除元素? , 让我们说数字 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 示例。

关于c# - C#中如何删除数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/496896/

相关文章:

c# - 我应该在工厂模式类中处理异常还是让它们向上传播?

.net - 如何在多个 .NET 应用程序之间共享 DAL 和 BLL?

python - 从python中的矩阵中提取子元素

Java 用不重复的记录填充数组

c# - 如何使 Reflector 不被新语法阻塞

c# - 两个服务相互依赖(stackoverflow异常)——如何解决?

c# - 这是 C# 中的闭包示例吗?

c# - 如何仅使用声明(接口(interface))对应用程序进行建模?

Javascript array.find() 回调将对象覆盖为全局数组

c# - Linq 与数据集。全部存储在内存中还是分页查询?