Предложение Orderby не работает с выпадающим списком в MVC - PullRequest
0 голосов
/ 12 ноября 2018

Я заполняю раскрывающийся список с помощью Linq, и предложение orderby, похоже, не работает.

 public List<Hello> getManagers()
         {
             var que = (from man in db.Table1
                        where man.Role == "Manager"
                        orderby man.Name
                        select new Hello
                        {
                           Managers = man.Name
                        }).Distinct().ToList();
             return que;
         }

Класс контроллера:

public ActionResult Index()
        {
            rp = new RequestProcess();
            ViewBag.ID = fillSelectedList("", "ID", rp);
            ViewBag.Managers = fillSelectedList("", "Managers", rp);
            return View(""); //View 1
        }
public static List<SelectListItem> fillSelectedList(string selValue, string type,  RequestProcess rp )
        {
            List<SelectListItem> list = new List<SelectListItem>();
            SelectListItem obj = new SelectListItem();
            if (type == "Managers") {
                 var tempList= rp.getManagers(); 
                tempList.ForEach(x =>
                {
                    obj = new SelectListItem();
                    obj.Text = x.Managers;
                    obj.Value = x.Managers;
                    obj.Selected = x.Managers == selValue ? true : false;
                    list.Add(obj);
                });
            }
            return list;
        }

Я все еще получаю неупорядоченный список.Какие-нибудь исправления?

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Как уже упоминалось в ответе выше, вам нужно отсортировать результат после Distinct().

Также обратите внимание, что вы смешиваете Лямбда-выражение и LINQ to Entities Запросы ... вы можете рассмотреть возможность выбора одного из них для согласованности (хотя нет синтаксической ошибки, если вы смешиваете их).Это тот же запрос с использованием лямбда-выражения:

 var que = _context.Table1
           .Where(m => m.Role == "Manager")
           .Select(h => new Hello { Managers = h.Name })
           .Distinct()
           .OrderBy(o => o.Managers)
           .ToList();
0 голосов
/ 12 ноября 2018

Результат не упорядочен, поскольку метод Distinct не возвращает упорядоченные результаты. Вместо этого вам нужно сначала позвонить Disctinct, и только потом OrderBy:

var que = (from man in db.Table1
    where man.Role == "Manager"
    select new Hello
    {
        Managers = man.Name
    }).Distinct()               // <- First distinct ...
    .OrderBy(x => x.Managers)   // <- ... then order by
    .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...