IQueryable необязательный OrderBy с PredicateBuilder и Entity Framework - PullRequest
3 голосов
/ 04 октября 2011

Я использую PredicateBuilder и LINQKit из Albahari для создания запроса LINQ, который имеет необязательные параметры, необязательный OrderBy, необязательный Skip () и необязательный Take ().

PredicateBuilder позволяет легко создавать дополнительные параметры, но у меня возникают проблемы с другими вещами.Чтобы упростить задачу:

Это работает

var query = this.MyContext.Things.AsExpandable.Where(predicate).OrderBy(s => s.Name);
return query.ToList();

Я хочу сделать что-то вроде этого, чтобы я мог обернуть OrderBy в if.Это не работает, однако, результаты не в порядке имен.

var query = this.MyContext.Things.AsExpandable().Where(predicate);
query.OrderBy(s => s.Name);
return query.ToList();

Может кто-то указать мне в правильном направлении?Я - конвертер из NHibernate и до сих пор вникну в LINQ.

1 Ответ

7 голосов
/ 04 октября 2011

Вам не хватает переназначения вашей переменной query - OrderBy() (как и все другие стандартные операторы запросов) возвращает новый IQueryable<T>:

query = query.OrderBy(s => s.Name);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...