Переменная OrderBy в контроллере

У меня есть код, подобный этому, в моем контроллере, который успешно работает, var results = from c в dbContext.MyClass orderby c.EnrtyDate по убыванию select c; вернуть представление (результаты.ToList());

Теперь пользователь хотел бы выбрать поле (поля) для OrderBy. У меня есть 5 выпадающих списков, каждый из которых содержит те же 5 вариантов имени поля. Пользователь может выбрать первое поле для упорядочения из первого раскрывающегося списка, затем второе из второго раскрывающегося списка и т. д., всего до пяти полей; назовем значение первой выборки sort1, второй sort2, затем sort3, sort4 и sort5.

Мне нужно, чтобы orderby отражал выбор, сделанный пользователем, например, orderby sort1, sort2, sort3, sort4, sort5. Как я могу ссылаться на эти поля в orderby, поскольку они являются переменными, содержащими имена полей, а не сами имена полей. ? Я не могу кодировать все сотни возможных комбинаций по отдельности.


person Glenn Byerly    schedule 28.01.2015    source источник
comment
Обычно полезно включить краткий пример того, с чем вы работаете, чтобы пользователи могли легко помочь. Имейте это в виду для будущих вопросов (или подумайте об улучшении этого).   -  person leigero    schedule 28.01.2015
comment
возможно, этот ответ может вам помочь 41244/   -  person Alexey    schedule 28.01.2015


Ответы (1)


Вы можете вложить заказ bys. Вы вызываете OrderBy для основной сортировки, если вы сортируете по возрастанию, и OrderByDescending, если вы сортируете по убыванию. Вложенная сортировка для сортировки два должна использовать ThenBy, если она восходящая, или ThenByDescending, если она нисходящая. По сути, ThenBy и ThenByDescending сделают именно то, что вы хотели.

Подробнее читайте здесь и здесь.

person Lajos Arpad    schedule 28.01.2015