PredicateBuilder 在 C# 中将列表置于列表中

car*_*ras 5 c# linq lambda predicatebuilder

我对 PredicateBuilder 类有疑问。

我有一个像 3 类的。

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;}
}
Run Code Online (Sandbox Code Playgroud)

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

var query = PredicateBuilder.True<A>();
query = query.And(x => x.listb.Where(b=> b.val3 == 1);
Run Code Online (Sandbox Code Playgroud)

Dav*_*d L 4

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

query.And(x => x.listb.Any(b => b.val3 == 1));
Run Code Online (Sandbox Code Playgroud)

这将返回其中任何项目包含of的所有A记录。如果您只想记录所有项目都符合条件的记录,请使用:listbval31Alistb.All()

query.And(x => x.listb.All(b => b.val3 == 1));
Run Code Online (Sandbox Code Playgroud)