asp.net- LINQ 查询中的 MVC 自连接
asp.net-MVC Self join in LINQ query
我正在使用 LINQ Self Join Query
在视图上显示数据。我的 SQL
table 包含一些员工详细信息。我需要在 DropDownListFor
控件中显示 Employee-Manager
。我试过这个查询并且它有效,但不是我想要的方式。查询显示 Employee-Manager
,如 { EmployeeManagerID = Roger }
,但它应该只显示 Roger
。下面的查询有什么问题?
var empmngr = from m in db.Employes
join e1 in db.Employes on m.EmployeeManagerID equals e1.EmpID
select new
{
EmployeeManagerID = e1.Name,
};
ViewData["EmployeeManager"] = new SelectList(empmngr.ToList(), "Name");
观点:
<div class="editor-label">
EmployeeManager
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.Name, ViewData["EmployeeManager"] as SelectList)
@Html.ValidationMessageFor(model => model.Name)
</div>
员工table:
EmpID Name EmployeeManagerID Designation Phone Address
1 Mike 3 Developer 123456 Texas
2 David 3 RM 123456 Delhi
3 Roger NULL GM 123456 Dallas
4 Marry 2 Developer 123456 NY
您正在向 SelectList
传递一个匿名类型的列表,所以它不知道如何显示它。
你应该 select 只有 Name
属性 并且有一个字符串列表:
var empmngr = from m in db.Employes
join e1 in db.Employes on m.EmployeeManagerID equals e1.EmpID
select e1.Name;
顺便说一句,SelectList
上的第二个参数是 selectedValue
,"Name"
在这里似乎不合适。
我正在使用 LINQ Self Join Query
在视图上显示数据。我的 SQL
table 包含一些员工详细信息。我需要在 DropDownListFor
控件中显示 Employee-Manager
。我试过这个查询并且它有效,但不是我想要的方式。查询显示 Employee-Manager
,如 { EmployeeManagerID = Roger }
,但它应该只显示 Roger
。下面的查询有什么问题?
var empmngr = from m in db.Employes
join e1 in db.Employes on m.EmployeeManagerID equals e1.EmpID
select new
{
EmployeeManagerID = e1.Name,
};
ViewData["EmployeeManager"] = new SelectList(empmngr.ToList(), "Name");
观点:
<div class="editor-label">
EmployeeManager
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.Name, ViewData["EmployeeManager"] as SelectList)
@Html.ValidationMessageFor(model => model.Name)
</div>
员工table:
EmpID Name EmployeeManagerID Designation Phone Address
1 Mike 3 Developer 123456 Texas
2 David 3 RM 123456 Delhi
3 Roger NULL GM 123456 Dallas
4 Marry 2 Developer 123456 NY
您正在向 SelectList
传递一个匿名类型的列表,所以它不知道如何显示它。
你应该 select 只有 Name
属性 并且有一个字符串列表:
var empmngr = from m in db.Employes
join e1 in db.Employes on m.EmployeeManagerID equals e1.EmpID
select e1.Name;
顺便说一句,SelectList
上的第二个参数是 selectedValue
,"Name"
在这里似乎不合适。