2016-07-20 128 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));