所以,我有一个类A
的对象列表,其中包含类List
的{{1}}个对象
B
我有清单:
class A
{
...
List<B> bs;
}
如何使用Linq“清理”mainList,通过从listsRemoval中存在的bs(对于mainList中的每个A)中删除所有对象?
我希望我没有把你与这个问题混为一谈。 :)
答案 0 :(得分:4)
linq本身可能不太合适,但你可以使用它的一些扩展方法。 Linq通常主要用于选择,而不是处理。
mainList.ForEach(x=>x.bs = x.bs.Where(y=>!listForRemoval.Contains(y)).ToList());
答案 1 :(得分:4)
是的,正如其他答案所示,这是可能的。但是,我会选择以下根本不使用LINQ的解决方案:
foreach (var a in mainList) {
a.bs.RemoveAll(b => listForRemoval.Contains(b));
}
优点:
答案 2 :(得分:2)
foreach (var list in mainList) {
list.bs = list.bs.Where(b => !listForRemoval.Contains(b)).ToList();
}
答案 3 :(得分:2)
mainList.ForEach(a => a.bs.RemoveAll(b => listForRemoval.Contains(b)));