如果某个语句为true,则从列表中删除对象

时间:2015-12-17 20:43:17

标签: c# .net linq

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

伪代码

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

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

2 个答案:

答案 0 :(得分:3)

使用List函数RemoveAll,你可以

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

答案 1 :(得分:1)

  

我在RemoveAll

上没有这个IList方法

这是因为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);
}