c# - PredicateBuilder Where List inside List with C#

标签 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;}
}

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

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

最佳答案

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

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

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

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

关于c# - PredicateBuilder Where List inside List with C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38489557/

相关文章:

c# - Entity Framework Where 子句奇怪的行为

lambda - 跟踪 lambda 表达式求值

通用图像处理库的 C# 设计指南

c# - 在 WCF 中创建自定义 Nullable 类实现

c# - EF 联盟问题“无法从 <AnonymusType#1 转换为 AnonymusType#2>

c# - 如何在包含 n 个字符的子字符串上对字符串进行切片 c#?

c# - 有没有办法获取 LINQ 查询创建的 SQL?

c++ - 在 lambda 中完美转发?

c# - 将聚合传递给 Linq 查询

c# - 使用 MSDASC.DLL 时应如何修复 "At least one of the arguments for ' .. .' cannot be marshaled"错误