我有Employee列表
EmpId EmpName ManagerId SalaryManagerId是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 });这是列表,我想从emp列表中获取empname和managername
发布于 2014-05-22 15:58:33
var result = from emp in empList 
             join mng in empList on emp.ManagerId equals mng.Id
             select new { 
                           emp.EmpName,
                           ManagerName =  mng.EmpName 
                         };或
var result = empList.Join(empList , emp => emp.ManagerId, mng => mng.EmpId, (emp, mng) => new
            {
                emp.EmpName,
                ManagerName = mng.EmpName
            });发布于 2014-05-22 16:34:20
我经常尝试避免使用SelectMany查询,因为它们并不总是可读性最好的。因此,根据具体情况,我可能会这样做:
var map = emp.ToDictionary(e => (int?)e.Empid);
Func<int?, string> getNameFromId = i =>
    i == null ? "n/a" : map[i].EmpName;
var query =
    from e in emp
    select new
    {
        e.EmpName,
        ManagerName = getNameFromId(e.Managerid)
    };我发现这类事情更明确一些,特别是因为它显式地处理某人没有经理的情况。
https://stackoverflow.com/questions/23800833
复制相似问题