IQueryable не позволяет ThenBy - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь отсортировать IQueryable по нескольким столбцам, и многие ответы StackOverflow, похоже, указывают на то, что я должен быть в состоянии сделать OrderBy для первичной сортировки и затем ThenBy для дополнительных сортировок. OrderBy в порядке, но он не позволяет мне использовать ThenBy. Это не компилируется. Я не понимаю, почему ...

IQueryable<vMyView> contacts = db.vMyView;

var orderExpressions = new Dictionary<string, Expression<Func<vCRMAllContact, object>>>()
    {
         {"LastName", x => x.LastName},
         {"FirstName", x => x.FirstName},
         {"Email", x => x.Email},
         {"Telephone1", x => x.Telephone1}
     };

contacts = contacts.OrderBy(orderExpressions[sortExpression], ascending).ThenBy(orderExpressions["FirstName"]).Skip(pageIndex * pageSize).Take(pageSize);

1 Ответ

0 голосов
/ 05 мая 2018

Ваш первый пример верный и обязательно должен работать:

var contacts = db.vMyView.OrderBy(c => c.LastName).ThenBy(c => c.FirstName);
// not sure why you need to reorder. Which could distort previous sorting
contacts = contacts.OrderBy(orderExpressions[sortExpression]).ThenBy(orderExpressions["FirstName"]);

Что-то не так во втором примере. OrderBy и ThenBy уже восходящие, дополнительный параметр не требуется. Существуют альтернативы для спуска, которые имеют соответствующие суффиксы: OrderByDescending и ThenByDescending.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...