【问题标题】:asp.net-MVC Self join in LINQ queryLINQ 查询中的 asp.net-MVC 自联接
【发布时间】:2017-06-10 13:04:02
【问题描述】:

我使用LINQ Self Join Query 在视图上显示数据。我的SQL 表包含一些员工详细信息。我需要在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>  

员工表:

 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

【问题讨论】:

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


【解决方案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" 在这里似乎不合适。

【讨论】:

  • 现在我有一个问题,我在 EmployeeManagerID 的名称后面没有 EmployeeManagerID,当我尝试插入新记录时遇到问题 EmployeeManagerID =null 任何建议
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
  • 1970-01-01
  • 2011-01-27
  • 1970-01-01
相关资源
最近更新 更多