2016-05-03 12 views
0
List<System.Linq.Expressions.Expression<Func<MyType, bool>>> lstPredicates = new List<System.Linq.Expressions.Expression<Func<MyType, bool>>>(); 

foreach (MyType myAccount in lstMyType) 
{ 
    System.Linq.Expressions.Expression<Func<MyType, bool>> predicate = 
     t => t.Account == myAccount.Account && t.Branch == myAccount.Branch; 
    lstPredicates.Add(predicate); 
} 

lstTransactions = Context.MyTrans 
    .Where(lstPredicates) 
    .ToList(); 

私はMyTransテーブルで検索を実行しようとしています。そのため、述語のリストを作成しています。私は、アカウントと支店の組み合わせのいずれかがトランザクション内に存在するリストでトランザクションを取得したい。Entity Frameworkの述語のリストWhere節

すなわち、私はあなたがLinqkitライブラリを使用することができ

predicate = t => 
    (t.Account == 123 && t.Branch == London) 
    || (t.Account == 433 && t.Branch == Manchester) 
    ||... 
+0

が、私は1つだけexpresionと.Contains()を使用して検討します。例Where(x => yourListOfIDs.Contains(x.Account) –

答えて

0

のような述語を生成しようとしています。あなたは次の操作を行うことができますPredicateBuilderを使用する:

var predicate = PredicateBuilder.False<MyType>(); 

foreach (MyType myAccount in lstMyType) 
{ 
    predicate = predicate.Or (
     t => t.Account == myAccount.Account && t.Branch == myAccount.Branch); 
} 

var query= Context.MyTrans.AsExpandable().Where(predicate); 
関連する問題