2016-07-20 75 views
4

我有一个PredicateBuilder类的问题。PredicateBuilder列表与C列表内列表#

我有一个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); 
+0

我得到的错误。 不能将类型“System.Collections.Generic.IEnumerable ”隐式转换为bool – caras

回答

3

只需使用.Any()取代.Where()创建真/假布尔条件:

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

这将返回所有A记录,其中listb中的任何项目包含val31。如果你只是想A记录,其中listb所有项目符合条件,使用.All()

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