我的对象布局在对象Node中有多个关系的位置。 Relation对象具有多个规则对象
是否可以一次删除所有对象而不是使用first()?实际上我想删除任何关系对象
中存在的对象规则Node.relations.First().rules.Remove(rule);
由于
答案 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));