linq从对象数组中删除item,其中property等于value

leo*_*ora 12 c# linq collections

如果我有

IEnumberable<Car> list
Run Code Online (Sandbox Code Playgroud)

我想根据汽车的属性从此列表中删除一个项目

我想要的东西:

list.RemoveWhere(r=>r.Year > 2000)
Run Code Online (Sandbox Code Playgroud)

这样的事情存在吗?

我一遍又一遍地这样做,所以我想避免每次复制列表只删除一个项目

slo*_*oth 13

IEnumberable 是不可变的,但你可以这样:

list = list.Where(r=>r.Year<=2000)
Run Code Online (Sandbox Code Playgroud)

或写一个扩展方法:

public static IEnumerable<T> RemoveWhere<T>(this IEnumerable<T> query, Predicate<T> predicate)
{ 
    return query.Where(e => !predicate(e));
}
Run Code Online (Sandbox Code Playgroud)


The*_*oul 13

聚会很晚,但任何人都会遇到这个问题,这是一个更清洁的解决方案:

MyList.RemoveAll( p => p.MyProperty == MyValue );
Run Code Online (Sandbox Code Playgroud)