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" 在这里似乎不合适。