我试图弄清楚如何在 Employees 表上执行条件查询以返回所有分配给他们的项目,但我不太了解如何实现的警告是,对于每个员工,有 0至 1 名 EmployeeAssistant(自行加入的实体)。因此,当我选择 EmployeeID=2 并且它有一个 EmployeeAssistantID=5 时,我想显示这两个人的所有项目,即主要员工 (EmployeeID=2) 和他们的助手 (EmployeeID=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?
})
最佳答案
您可以使用以下 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)
};
查询返回的匿名类型包含来自两个员工实体的所有数据,以及每个员工的所有项目数据(有些可以相同,有些可能不同)。
关于c# - 有 2 组数据的自连接表的条件 LINQ 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27512972/