You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从ArrayList中移除Empty值(非空字符串类型)

解决ArrayList中移除Empty类型值的问题

你调用list1.Remove("")无效的核心原因:ArrayList的Remove方法基于对象相等性查找元素,你传入的是空字符串"",但列表中的目标值是Empty类型的实例(比如DBNull.Value或自定义Empty单例),两者类型完全不同,Equals判断不成立,因此无法匹配到要移除的元素。

正确处理方式分两种场景:

1. 明确Empty实例的具体值

若清楚Empty值的具体实例(比如常见的DBNull.Value),直接传入该实例调用Remove即可:

// 假设Empty值为DBNull.Value
list1.Remove(DBNull.Value);

如果是自定义Empty类型的单例对象,传入对应实例即可:

// 假设自定义Empty类型的实例是MyEmpty.Instance
list1.Remove(MyEmpty.Instance);

2. 批量移除所有Empty类型元素

若列表中有多个Empty类型元素,或不确定具体实例,可通过遍历筛选移除:

方式一:反向遍历移除(避免索引偏移问题)

for (int i = list1.Count - 1; i >= 0; i--)
{
    // 替换为实际的Empty类型判断逻辑,比如判断是否为DBNull
    if (list1[i] is DBNull)
    {
        list1.RemoveAt(i);
    }
}

方式二:用LINQ筛选后重建列表(适合允许重新赋值的场景)

// 将ArrayList转换为对象集合,筛选掉Empty类型元素后重建ArrayList
list1 = new ArrayList(list1.Cast<object>().Where(item => !(item is DBNull)).ToList());

注意:如果你的Empty类型不是DBNull,需将代码中的类型判断替换为实际的Empty类型(比如item is MyEmptyType)。

内容的提问来源于stack exchange,提问作者Ritam Chakrabarty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 07:52:14