SelectMany似乎创建了该集合的副本。我正在寻找一种方法来从展平的集合中删除项目并保持更改。
示例:
var removed = FooItems
.SelectMany(x => x.Children)
.ToList()
.RemoveAll(y => y.ID == "1");
以上所有内容都为已删除的项目返回1,但似乎已将其从集合的副本中删除,并且原始文件未被修改。
任何提示请告知。
答案 0 :(得分:2)
假设Children
是List<T>
,那么您可以循环FooItems
并从每个Children
列表中删除。
foreach(var foo in FooItems)
foo.Children.RemoveAll(y => y.ID == "1");
如果Children
不是List<T>
而是IEnumerable
,那么您必须执行其他操作,例如
foreach(var foo in FooItems)
foo.Children = foo.Children.Where(y => y.ID != "1").ToList();