Следующий запрос Linq-to-Entities работает нормально:
var query = repository.Where(r => r.YearProp1.HasValue &&
r.YearProp1 >= minYear &&
r.YearProp1 <= maxYear);
В моей базе данных около дюжины столбцов, в которых содержится информация, относящаяся к годам (тип данных short?
). Я хочу повторно использовать тот же Linq. Логика -to-Entities для всех этих столбцов.Что-то вроде:
Func<RepoEntity, short?> fx = GetYearPropertyFunction();
var query = repository.Where(r => fx(r).HasValue &&
fx(r) >= minYear &&
fx(r) <= maxYear);
Это приводит к ошибке:
LINQ to Entities не распознает метод 'System.Nullable`1[System.Int16] fx(RepoEntity)', и этот метод не может быть преобразован в выражение хранилища.
Я понимаю, почему я получаю сообщение об ошибке, но мне интересно, есть ли обходной путь, который не включает дублирование кода десятки раз только для изменения свойства, с которым работает SQL-запрос.
Я бы повторно использовал эту функцию более чем в одном запросе, поэтому я предполагаю, что общая версия моего вопроса такова: Есть ли способ преобразовать простую лямбда-функцию получения свойства в выражение, которое может использоваться Связь с сущностями?