linq中的自联接查询

Ari*_*gam 0 .net c# linq

我有Employee清单

EmpId EmpName ManagerId Salary
Run Code Online (Sandbox Code Playgroud)

ManagerId 其中一个 EmpId

我想EmpName,ManagerName(用ManagerId得到EmpName来自同一列表).请任何人帮助我..

List<Employee> emp = new List<Employee>();
emp.Add(new Employee() { Empid = 1, EmpName = "Arivu", Managerid=null, salary = 20000 });
emp.Add(new Employee() { Empid = 2, EmpName = "kavi", Managerid=1, salary = 30000 });
emp.Add(new Employee() { Empid = 6, EmpName = "karthi", Managerid = 1, salary = 307000 });
emp.Add(new Employee() { Empid = 3, EmpName = "Anbu", Managerid = 2, salary = 40000 });
emp.Add(new Employee() { Empid = 4, EmpName = "asfdsf", Managerid = 1, salary = 55000 });
emp.Add(new Employee() { Empid = 5, EmpName = "Nithya", Managerid = 3, salary = 12000 });
Run Code Online (Sandbox Code Playgroud)

这是清单,我想要得到的empname,并managernameemp列表

huM*_*pty 5

var result = from emp in empList 
             join mng in empList on emp.ManagerId equals mng.Id
             select new { 
                           emp.EmpName,
                           ManagerName =  mng.EmpName 
                         };
Run Code Online (Sandbox Code Playgroud)

要么

var result = empList.Join(empList , emp => emp.ManagerId, mng => mng.EmpId, (emp, mng) => new
            {
                emp.EmpName,
                ManagerName = mng.EmpName
            });
Run Code Online (Sandbox Code Playgroud)