使用linq删除对象

时间:2015-03-04 11:47:30

标签: c# linq

我的对象布局在对象Node中有多个关系的位置。 Relation对象具有多个规则对象

是否可以一次删除所有对象而不是使用first()?实际上我想删除任何关系对象

中存在的对象规则
Node.relations.First().rules.Remove(rule);

由于

3 个答案:

答案 0 :(得分:1)

嗯,你可以使用一个循环。我假设任何类型rules都支持Contains

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

答案 1 :(得分:1)

也许你正在照顾这个?

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

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

编辑:由于GazTheDestroyer也提到LINQ不是为更新列表而设计的,而是用于查询它们。因此,您可以使用LINQ创建新列表,也可以使用GazTheDestroyer对其项目进行删除。

答案 2 :(得分:0)

Linq的灵感来自功能性编程,因此无副作用。换句话说,linq查询不会改变数据,只会查询它。

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

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