[c#]自加入表用 2 的数据集上的条件 LINQ 查询。

发布时间: 2017/2/28 21:12:46
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我试图弄清楚如何执行条件查询在雇员表给带回他们分配的项目,但告诫我不太明白如何实施都是 0 到 1 EmployeeAssistant (自加入实体),每一位员工。 所以,当我选择雇员 id = 2,EmployeeAssistantID = 5,我想为这两人,即主要的员工显示的所有项目 (雇员 id = 2) 和他们的助手 (雇员 id = 5)。

表看起来像︰

Employees
 - EmployeeID  -- (Pkey)
 - EmployeeAssistantID --  (Fkey to Employees.EmployeeID)
 - other fields

-

Projects
 - ProjectID  --  (PKey)
 - EmployeeID  -- (Fkey to Employees.EmployeeID)
 - other fields

我试图在 LINQ 中以下︰

var projects = Projects.Include(proj => proj.Employee)
                        .Select(x => new
                        {
                            proj.ProjectID,
                            proj.ProjectName,
                            proj.Employee.Name
                            // ... not sure how to bring back another layer of projects for the EmployeeAssistant?
                        })

解决方法 1:

您可以使用下面的 Linq 查询来获取你想要的数据︰

var query = from e in Employees
            join a in Employees on e.EmployeeAssistantID equals a.EmployeeID
            where e.EmployeeID == 2
            select new
            {
               EmployeeID = e.EmployeeID,
               AssistantID = a.EmployeeID,
               EmployeeProjects = Projects.Where(p => p.EmployeeID == e.EmployeeID),
               AssistantProjects = Projects.Where(p => p.EmployeeID == a.EmployeeID)
            };

由查询返回的匿名类型包含所有的数据来自两个雇员实体,以及所有项目数据的每个员工 (有些可以是相同的别人可能会有所不同)。

官方微信
官方QQ群
31647020