2013-12-23 8 views
8

Expressionを使用してクエリに渡します。しかし、私はエラーがあります - LINQ式のノード型 'Lambda'は、LINQ to Entitiesではサポートされていません。また、Linqkit.dllをAsExpandable()で使用していますが、同じエラーがあります。LINQ式のノード型 'Lambda'は、LINQ to Entitiesではサポートされていません

public List<Correct> GetCorrects(Expression<Func<Correct, bool?>> predicate) 
{ 
    using (SystemsEntities context = new SystemsEntities()) 
    { 
     var result = context.Corrects.Where(x => predicate == null); 
     return result.ToList(); 
    } 
} 

上記のエラーが発生します。何が失敗していますか?

答えて

14

使用この:

var result = context.Corrects.Where(predicate); 

の代わりに、この:

var result = context.Corrects.Where(x => predicate == null); 

WhereはタイプExpression<Func<T, bool>>の引数を期待していますが、代わりにExpression<Func<T, Expression<...>>に合格しようとしています。これは有効なコンパイル時の構文ですが、ランタイムLINQプロバイダでは、predicateをSQLに変換しようとすると失敗します。

Expression<Func<Correct, bool?>>Expression<Func<Correct, bool>>に変更する必要があります。

関連する問題