使用linq删除对象

本文关键字:对象 删除 linq 使用 | 更新日期: 2024-10-07 14:54:11

我的对象被布置在对象节点中有多个关系的地方。关系对象有多个规则对象

是否可以一次删除所有对象,而不是使用first()?事实上,如果对象规则存在于任何关系对象中,我想删除它

Node.relations.First().rules.Remove(rule);

感谢

使用linq删除对象

erm,您可以使用循环。我假设rules的任何类型都支持Contains

foreach(var relation in Node.relations)
{
    if (relation.rules.Contains(rule))
    {
        relation.rules.Remove(rule);
    }
}

也许你在照顾这个?

var new relations = Node.relations.SelectMany(x => x.rules).Where(x => x != rule)

Select选择所有关系中不等于给定关系的所有规则。

编者按:正如GazTheDestroyer也提到的,LINQ不是为更新列表而设计的,而是为查询列表而设计。因此,您可以使用LINQ创建一个新列表,也可以创建一个列表,并按照GazTheDestroyer的建议对其项调用remove。

Linq的灵感来自函数式编程,因此没有副作用。换句话说,linq查询不改变数据,只查询它

Remove()不是linq方法。它是一种List<T>方法。List还有一个ForEach()方法,所以你可以这样做:

Node.relations.ForEach(x => x.rules.Remove(rule));