如果某些陈述为真,则从列表中删除对象[重复]

Posted

技术标签:

【中文标题】如果某些陈述为真,则从列表中删除对象[重复]【英文标题】:remove object from the list if certain statement is true [duplicate] 【发布时间】:2015-12-17 20:43:17 【问题描述】:

使用 linq 我想检查某个条件,如果满足该条件,我想从列表中删除该对象

伪代码

if any object inside cars list has Manufacturer.CarFormat != null
delete that object

if (muObj.Cars.Any(x => x.Manufacturer.CarFormat != null))

    ?

【问题讨论】:

【参考方案1】:

使用List函数RemoveAll,可以

muObj.Cars.RemoveAll(x => x.Manufacturer.CarFormat != null);

【讨论】:

从技术上讲,这不是 Linq - 只是 List 上的普通方法。 是的,你是对的。已编辑。【参考方案2】:

我在IList 上没有这个RemoveAll 方法

这是因为RemoveAllList<T> 上的方法,而不是IList<T>。如果您不想尝试转换为 List<T>(如果失败了怎么办?),那么一种选择是按索引循环(以相反的顺序进行,以免弄乱索引计数:

for (int i = muObj.Cars.Count - 1; i >= 0; i--)

    if(muObj.Cars[i].Manufacturer.CarFormat != null)
        muObj.Cars.RemoveAt(i);

【讨论】:

以上是关于如果某些陈述为真,则从列表中删除对象[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从集合中删除项目时出错[重复]

如果用户关闭浏览器,则从数据库中删除数据[重复]

如果重复 x 次,则从数组中删除值 | JavaScript

如果两个值匹配,则从 php 中的多维关联数组中删除重复项

如果 sql 语句中存在表,则从 oracle 数据库中删除表 [重复]

Scala - 如果 DF1 中的数据与 DF2 中的列匹配,则从 DF1 中删除记录 [重复]