2017-03-17 9 views
1

ので、私はこのようなものが必要:私は自分のアプリケーションで同じEFクエリを複数回使用し

var students = context.Orders.Where(x => StudentIsActive() && StudentIsBusy()).ToList(); 

誰でもこれについて考えていますか?私はどのようにしておよびまたはまたはの表現方法の間のロジックを使用できますか?

+1

あなたが唯一の '、それらを一緒にAnd'だけ追加する必要がある場合は、別の' WHERE'句、例えば: 'context.Orders.Where(StudentIsActive() )012.Where(StudentIsBusy()) ' – DavidG

+0

@DavidGお返事ありがとう、AND – Saeid

答えて

0

私は私はあなたがこのようのIQueryableの拡張メソッドにこれらのメソッドを輸送することができると思うのITT買いテストカントので、私は家ではないです:私は

context.Orders.StudentIsActive().IsBusy().ToList(); 
+0

のための良い解決方法これは" and "のみで、" or "ではなく、上記の私のコメントと変わりません。 – DavidG

0

public static class Ext 
    { 
     public static IQueryable<MainActivity.Student> StudentIsActive(this IQueryable<MainActivity.Student> @this) 
     { 
      return @this.Where(x => !x.IsDeleted && x.ItemsNumber > 0 && x.Sort > 0 && x.Status == StudentStatus.Active); 
     } 

     public static IQueryable<MainActivity.Student> IsBusy(this IQueryable<MainActivity.Student> @this) 
     { 
      return @this.Where(x.Mode == ModeType.Busy && x.Jobs.Count() > 0); 
     } 

    } 

など、それを使用します通常は最も簡単な方法を見つけるAnd/OrExpression一緒にLinqKitを使用することです。あなたがそのライブラリを参照したら、あなたがこれを行うことができます:

//Or 
var orPredicate = PredicateBuilder.Or(StudentIsActive(), StudentIsBusy()); 
var orders1 = context.Orders.AsExpandable().Where(orPredicate); 

//And 
var andPredicate = PredicateBuilder.And(StudentIsActive(), StudentIsBusy()); 
var orders2 = context.Orders.AsExpandable().Where(andPredicate); 
+0

これを落とした人は説明してもらえますか? – DavidG

関連する問題