LINQKitを使用して LINQ To Entities 機能を拡張しています。
public Boolean IsMatched(Int32 age)
{
return age > 18;
}
public IQueryable<Users> GetAllMatchedUsers(Func<Int32, Boolean> isMatched)
{
return qry = _Context.Users.AsExpandable().Where(x => x.IsActive && isMatched(x.Age));
}
このコードは、Entity Framework ORMオブジェクトに使用されます (_Context はDbContext、Users - はDBSet ) 。
このコードは次の例外をスローします
タイプ 'System.Linq.Expressions.FieldExpression' のオブジェクトをタイプ 'System.Linq.Expressions.LambdaExpression' にキャストできません
Funcを取り除き、 IsMatchedをGetAllMatchedUsersにハードコーディングすると、この問題が解決します。しかし、Funcを使用して、ビジネス ロジック層からデータ アクセス層にさまざまな選択基準を渡す必要があります。
PS IsMatchedは、もちろん非常に単純化された実現です。
お願い助けて。