谓词生成器Where List in List with C#

本文关键字:List in with Where 谓词 | 更新日期: 2023-09-27 17:58:07

我的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;}
}

我如何在B类中搜索val3我需要一个类似的搜索:

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

谓词生成器Where List in List with C#

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

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

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

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