PredicateBuilder Where List inside List with C#

PredicateBuilder Where List inside List with C#

PredicateBuilder 有问题Class。

我有 3 个 class 喜欢。

public class A
{
  public int val1 {get;set;}
  public int val2 {get;set;}
  public List<B> listb {get;set;}
}

public class B
{
  public int val3 {get;set;}
  public int val4 {get;set;}
  public List<C> listc {get;set;}
}

如何在 B 中搜索 val3 class 我需要这样的搜索:

var query = PredicateBuilder.True<A>();
query = query.And(x => x.listb.Where(b=> b.val3 == 1);

只需将 .Where() 替换为 .Any() 即可创建 true/false 布尔条件:

query.And(x => x.listb.Any(b => b.val3 == 1));

这将 return 所有 A 条记录,其中 listb 中的任何项目包含 val31。如果您只想要 A 条记录,其中 all 项在 listb 中符合条件,请使用 .All()

query.And(x => x.listb.All(b => b.val3 == 1));