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