我有一个 List 集合,其中包含一个 List 子集合作为其中的属性,并且我想根据某些属性的值过滤掉该子集合中的项目。
为简化起见,我将调用主集合 THING 和子集合 SUBTHING。它们是不同的类型。THINGS 可以有 1 到多个 SUBTHINGS。SUBTHING 有 2 个我想过滤的属性,PROP1 应该等于 1(它可以等于 1、2、3),PROP2 不应该是 NULL(它可以包含一个字符串)。
因此,当我使用像下面这样的查询时,它似乎给了我想要的东西(尽管我不确定 All() 是否符合我的预期):
search = from c in search
where c.SUBTHING.All(s=>s.PROP1==1)
select c;
然后当我添加其他属性时我会怀疑:
search = from c in search
where c.SUBTHING.All(s=>s.PROP1==1 && s.PROP2 != NULL)
select c;
我得到了 PROP2 为 Null 的东西。
当我切换到 Any() 时,我失去了对 SUBTHING 的所有过滤,它显示了 PROP1 = 1、2、3 以及 PROP2 为 NULL 而不是 NULL 的 SUBTHINGS。
我想要得到的是一个列出所有 THING ID 的集合,然后列出所有 SUBTHINGS 的名称,有点像这样:
THING.ID
SUBTHING.Name
SUBTHING.Name
THING.ID
SUBTHING.Name
SUBTHING.Name
由于 THING 和 SUBTHING 是两种不同的类型,这是否也可以在使用 LINQ 过滤 THINGS 时过滤 SUBTHINGS?