好的,这对我来说是一个非常有趣的问题,所以我会尽力以你能理解的方式问这个问题。
所以,我有一个对象集合,其中包含一组对象,这些对象包含一组对象,这些对象的属性有时可以为null。
它看起来像这个伪代码:
Class ObjectA {
public IEnumberable<ObjectB>
}
Class ObjectB {
public IEnumberable<ObjectC>
}
Class ObjectC {
property? a;
}
好的,现在我基本上需要过滤掉所有的ObjectC,其中property = someValue或属性为null。
我试过这个:(记住,这只是一个例子,不是真正的代码)
IEnumberable<ClassA> collection;
List<string> filters; // This contains a list of filters
collection = collection.Where(a => a.collectionB.All(b =>
b.collectionC.Where(c => !filter
.Contains(c.Property))?
.Count() == 0))
.ToList();
所以,问题是,如果我将过滤器与c.Property
匹配,则没有任何反应。它应该从collection
删除它,但它不是。我还需要过滤掉c.Property == null
或collectionC == null
中的任何一个。
编辑:
我真正想要实现的是一些c.Property =&#39; x&#39;还有一些c.Property =&#39; y&#39;还有一些c.Property = null,我想从我的collection
中删除c.Property =&#39; x&#39;剩下的就剩下了。
答案 0 :(得分:1)
collection.Where(a=>a.collectionB.Any(b=> b.collectionC == null ||
b.collectionC.Any(c=>c.Property == null || filters.Contains(c.Property))))