Я просто хочу создать динамические фильтры. И, наконец, вернутьсяКак преобразовать IQueryable <T> в выражение <Func <T, bool>>?
Expression<Func<Event, bool>>
Я пытался использовать Синдикат (AndAlso) выражения, но не работает и, наконец, я обнаружил, что есть IQueryable запросов которых работает хорошо, но теперь, как я могу конвертировать это тип возвращаемого значения -
Expression<Func<Event, bool>>?
Мой код:
public IQueryable<Event> GetBySearch(EventFilter search)
{
IQueryable<Event> query = this.Context.Events.AsQueryable();
Expression<Func<Event, bool>> expression = null;
if (search.CategoryId != 0)
{
query = query.Where(x => x.CategoryId == search.CategoryId);
}
if (search.SubCategoryId != 0)
{
query = query.Where(x => x.SubCategoryId == search.SubCategoryId);
}
expression = query.Expression as Expression<Func<Event, bool>>; //This convert is not working, it returns null.
return this.Context.Events.Where(expression);
}
Посмотрите на обновленный ответ (я думаю, вы уже приняли его, но не уверены, что он все равно получит уведомление в этом случае), который учитывает комментарий Флориана. – Sam