Как я могу отсортировать список на основе выбора пользователя в ASP.NET MVC? - PullRequest
5 голосов
/ 12 января 2012

У меня есть список клиентов, которые могут быть отсортированы в любом месте от 1 до 6 полей в зависимости от выбора пользователя.Поля сортировки могут быть в любом порядке.Если я знаю поля и последовательность заранее, сортировка будет простой:

customers = customers
                .OrderBy(c => c.LastName)
                .ThenBy(c => c.City)
                .ThenBy(c => c.Age).ToList();

Как мне передать поля сортировки во время выполнения?Есть ли способ сделать что-то подобное?

    string sortField1 = "State";
    string sortField2 = "City";
    string sortField3 = "Type";

    customers = customers
                .OrderBy(c => c.sortField1)
                .ThenBy(c => c.sortField2)
                .ThenBy(c => c.sortField3).ToList();

Ответы [ 2 ]

1 голос
/ 12 января 2012

Я решил это, связав операторы .OrderBy в цикле ForEach..OrderBy добавляется к моему запросу Linq для каждого критерия сортировки, выбранного пользователем.Оборачивая мой список в IQueryable, я могу видеть запрос Linq в его построении.

1 голос
/ 12 января 2012

Посмотрите на http://tomasp.net/articles/dynamic-linq-queries.aspx учебник о том, как создавать динамические запросы LinQ во время выполнения. Это должно быть то, что вы ищете.

...