使用linq删除对象
本文关键字:对象 删除 linq 使用 | 更新日期: 2024-10-07 14:54:11
我的对象被布置在对象节点中有多个关系的地方。关系对象有多个规则对象
是否可以一次删除所有对象,而不是使用first()?事实上,如果对象规则存在于任何关系对象中,我想删除它
Node.relations.First().rules.Remove(rule);
感谢
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));