2017-06-10 4 views
0

J'utilise LINQ Self Join Query pour afficher les données sur la vue. Ma table SQL contient des détails sur les employés. Je dois montrer Employee-Manager à l'intérieur du contrôle DropDownListFor. J'ai essayé cette requête et cela fonctionne, mais pas comme je le veux. La requête affiche le Employee-Manager comme dans { EmployeeManagerID = Roger }, mais il ne devrait afficher que Roger. Quel est le problème avec la requête ci-dessous?asp.net MVC-auto se joindre à la requête 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"); 

La vue:

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

Le tableau des employés:

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

Où est Ali dans votre table? –

+0

@The_Outsider désolé 'Roger' pas ali – ahosam

+0

double possible de [auto se joindre dans la requête LINQ et retour Voir] (https://stackoverflow.com/questions/17610890/self-join-in-linq-query-and-return- vue) –

Répondre

1

Vous passez et une liste de type anonyme au SelectList, il ne sait pas comment montrer il.

Vous devez sélectionner uniquement la propriété Name et ont une liste de chaînes:

var empmngr = from m in db.Employes 
       join e1 in db.Employes on m.EmployeeManagerID equals e1.EmpID 
       select e1.Name; 

BTW, le second paramètre sur la SelectList est le selectedValue, "Name" ne semble pas approprié ici.

+0

maintenant j'ai problème que je n'ai pas EmployeeManagerID à l'arrière du nom de la EmployeeManagerID face à i problème lorsque je tente d'insérer un nouveau disque du EmployeeManagerID = null des conseils – ahosam