C# 使用linq删除对象

C# 使用linq删除对象,c#,linq,C#,Linq,我的对象在对象节点中具有多个关系的位置进行布局。关系对象具有多个规则对象 是否可以一次删除所有对象而不使用first()?实际上,我想删除对象规则,如果它存在于任何关系对象中 Node.relations.First().rules.Remove(rule); 谢谢呃,您可以使用循环。我假设规则支持包含的任何类型 foreach(var relation in Node.relations) { if (relation.rules.Contains(rule)) {

我的对象在对象节点中具有多个关系的位置进行布局。关系对象具有多个规则对象

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

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

谢谢

呃,您可以使用循环。我假设
规则
支持
包含的任何类型

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)
选择选择所有关系中不等于给定规则的所有规则


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

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

Remove()
不是linq方法。这是一种
列表
方法。列表还有一个
ForEach()
方法,因此您可以执行以下操作:

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

你在说什么?什么类型是
关系
什么类型是
规则
?如何定义
节点