Asp.net mvc Orderby子句不适用于mvc中的下拉列表
我正在使用Linq填充一个下拉列表,而orderby子句似乎不起作用Asp.net mvc Orderby子句不适用于mvc中的下拉列表,asp.net-mvc,entity-framework,linq,Asp.net Mvc,Entity Framework,Linq,我正在使用Linq填充一个下拉列表,而orderby子句似乎不起作用 public List<Hello> getManagers() { var que = (from man in db.Table1 where man.Role == "Manager" orderby man.Name s
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;
}
公共列表getManagers()
{
var que=(来自db.Table1中的man)
其中man.Role==“经理”
命令人,姓名
选择新建Hello
{
经理=人。姓名
}).Distinct().ToList();
回程时间;
}
控制器类:
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;
}
public ActionResult Index()
{
rp=新的RequestProcess();
ViewBag.ID=fillSelectedList(“,”ID“,rp);
ViewBag.Managers=fillSelectedList(“,“Managers”,rp);
返回视图(“”;//视图1
}
公共静态列表fillSelectedList(字符串selValue、字符串类型、RequestProcess rp)
{
列表=新列表();
SelectListItem obj=新建SelectListItem();
如果(类型==“管理者”){
var templast=rp.getManagers();
templast.ForEach(x=>
{
obj=新建SelectListItem();
obj.Text=x.经理;
目标价值=x个管理者;
obj.Selected=x.Managers==selValue?真:假;
列表。添加(obj);
});
}
退货清单;
}
我仍然收到一份未排序的列表。有任何修复吗?结果不按顺序排列,因为方法
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();
var que=(来自db.Table1中的man
其中man.Role==“经理”
选择新建Hello
{
经理=人。姓名
}).Distinct()///x.Managers)//结果没有排序,因为方法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();
var que=(来自db.Table1中的man
其中man.Role==“经理”
选择新建Hello
{
经理=人。姓名
}).Distinct()//x.Managers)//如上所述,您需要在Distinct()
之后对结果进行排序
还请注意,您正在混合Lambda表达式和LINQ到实体查询。。。您可能想考虑为一致性选择其中一个(尽管混合它们没有语法错误)。这是使用lambda表达式的相同查询:
var que = _context.Table1
.Where(m => m.Role == "Manager")
.Select(h => new Hello { Managers = h.Name })
.Distinct()
.OrderBy(o => o.Managers)
.ToList();
如上所述,您需要在Distinct()
之后对结果进行排序
还请注意,您正在混合Lambda表达式和LINQ到实体查询。。。您可能想考虑为一致性选择其中一个(尽管混合它们没有语法错误)。这是使用lambda表达式的相同查询:
var que = _context.Table1
.Where(m => m.Role == "Manager")
.Select(h => new Hello { Managers = h.Name })
.Distinct()
.OrderBy(o => o.Managers)
.ToList();
您在哪里调用getManagers()
?什么是fillSelectedList()?
@StephenMuecke更新了编辑,忘记了那部分。你在哪里调用GetManager()
?什么是fillSelectedList()?
@StephenMuecke更新了编辑,忘记了那部分。谢谢!!工作得很卖力谢谢你!!工作得很有魅力!谢谢:)注意到了!谢谢:)