2013-10-25 3 views
0

Я использую LINQKit для расширения LINQ к возможностям Entities:Невозможно бросить исключение объекта при использовании LINQ To Entities с LINQKit

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, пользователей - это DBSet)

Этот код генерирует следующие исключения

Невозможно привести объект типа 'System.Linq.Expressions.FieldExpression' ввести 'System.Linq.Expressions.LambdaExpression'

Избавление от Func и жестко прописывать IsMatched в GetAllMatchedUsers решает эту проблему. Но мне нужно использовать Func пройти различные критерии выбора из Business Logic Layer к моему Data Access Layer

П. С. IsMatched существенно упрощается реализация, например, конечно

Помогите мне пожалуйста.

+0

Вам также не хватает имени параметра в коде или оно находится здесь? –

+0

Просто здесь :) Я скорректировал свой пример кода. – bairog

+0

Добавил дополнительную информацию о том, что такое _Context и пользователи – bairog

ответ

1

С LinqKit вам придется пройти Expression<Func<Int32, Boolean>> isMatched

Func<...> является то, что компилируется уже C# выполнения.

Expression<Func<...>> - это то, что вы можете передать как дерево выражений в SQL.

Смежные вопросы