2017-06-10 14 views
0

私はLINQ Self Join Queryを使用してビューにデータを表示しています。私のSQLテーブルには従業員の詳細がいくつか含まれています。 DropDownListForコントロール内にEmployee-Managerと表示する必要があります。私はこのクエリを試して、それは動作しますが、私が望む方法ではありません。クエリでのようにEmployee-Managerが表示されますが、表示されるのはRogerです。以下のクエリで何が問題になっていますか?asp.net-MVC LINQクエリの自己結合

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> 

employeeテーブル:

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 
+0

あなたのテーブルにAliはどこですか? –

+0

@The_Outsiderごめん 'Roger'ないアリ – ahosam

+0

[セルフLINQクエリに参加し、Viewを返す]の可能複製(https://stackoverflow.com/questions/17610890/self-join-in-linq-query-and-return-ビュー) –

答えて

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上の2番目のパラメータはselectedValueあり、"Name"は、ここでは、適切ないないようです。

+0

今私はEmployeeManagerIDの名前の後ろにEmployeeManagerIDを持っていない私は新しいレコードを挿入しようとすると問題に直面するEmployeeManagerID = null – ahosam