Я использую EF6 и ищу решение для создания запроса, в котором следует выбрать одно из полей, в зависимости от значения, которое возвращает Expression. Я играю с библиотекой LINQKit для этого, но получаю ошибку с этим.
Итак, я создал многократно используемый предикат, который вычисляет logi c в БД:
public partial class Study
{
public static Expression<Func<Study, bool>> ShouldNameBeDisplayedForStaffExpression(int staffId)
{
return study =>
(study.StudyViewAccessId == 1 && study.StudyEditAccessId == 1)
|| study.Roles.Any(y => y.StaffId == staffId);
//Here other additional logic
}
}
И теперь мне нужно установить правильное значение, чтобы поле Name зависело от результата, который возвращает предикат. Основное требование - это нужно делать на уровне запросов (в коллекции IQueryable). StudyCoreModelsQuery - это EF6 EntitySets.
IQueryable<Study> studiesCoreModelsQuery = this._dbContext.Studies;
IQueryable<StudyViewModel> query = studiesCoreModelsQuery.AsExpandable().Select(x => new StudyViewModel
{
Name = Study.ShouldNameBeDisplayedForStaffExpression(staffId).Invoke(x)
? x.Name
: "Hidden"
});
Невозможно понять, как получить результат выполнения выражения в Select. Буду признателен за любую помощь.