asp.net-MVC自我加入LINQ查询

时间:2017-06-10 13:04:02

标签: c# asp.net-mvc linq linq-to-sql html.dropdownlistfor

我正在使用LINQ Self Join Query在视图上显示数据。我的SQL表包含一些员工详细信息。我需要在Employee-Manager控件中显示DropDownListFor。我已经尝试过这个查询并且它有效,但不是我想要的方式。该查询会在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>  

员工表:

 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

1 个答案:

答案 0 :(得分:1)

您正在向SelectList传递匿名类型列表,因此它不知道如何展示它。

您应该只选择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"似乎不合适。