gpt4 book ai didi

c# - 有 2 组数据的自连接表的条件 LINQ 查询

转载 作者:太空宇宙 更新时间:2023-11-03 23:46:19 24 4
gpt4 key购买 nike

我试图弄清楚如何在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com