Как использовать предикаты в LINQ to Entities для объектов Entity Framework

Я использую LINQ to Entities для объектов Entity Framework в моем уровне доступа к данным.

Моя цель - отфильтровать как можно больше данных из базы данных, не применяя логику фильтрации к результатам в памяти.

Для этой цели уровень бизнес-логики передает предикат уровню доступа к данным.

я имею в виду

Func<MyEntity, bool>

Итак, если я использую этот предикат напрямую, как

public IQueryable<MyEntity> GetAllMatchedEntities(Func<MyEntity, Boolean> isMatched)
{
    return qry = _Context.MyEntities.Where(x => isMatched(x));
}

Я получаю исключение

[System.NotSupportedException] --- {"Тип узла выражения LINQ 'Invoke' не поддерживается в LINQ to Entities."}

Решение вэтот вопрос предлагает использовать метод AsExpandable () изLINQKit библиотека.

Но опять же, используя

public IQueryable<MyEntity> GetAllMatchedEntities(Func<MyEntity, Boolean> isMatched)
{
    return qry = _Context.MyEntities.AsExpandable().Where(x => isMatched(x));
}

Я получаю исключение

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

Есть ли способ использовать предикат в запросе LINQ to Entities для объектов Entity Framework, чтобы он правильно преобразовал его в оператор SQL.

Спасибо.

Ответы на вопрос(2)

Ваш ответ на вопрос