gpt4 book ai didi

c# - LINQ 使用左外连接对多个字段进行连接查询

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

我有产品表和官员表如下:

产品

ProductID | ProductName | Officer1ID | Officer2ID | Officer3ID
--------- | ----------- | ---------- | ---------- | ----------
12 | Mouse | 123 | 124 | 125
13 | Keyboard | 234 | 235 | 0

官员

OfficerID | OfficerName 
--------- | -----------
123 | John
124 | Andy
125 | Mark



我需要将 Product 表中的 3 列(Officer1ID、Officer2ID、Officer3ID)与 Officer 表中的 OfficerID 连接起来,以产生如下结果:

ProductID | ProductName | Officer1Name | Officer2Name | Officer3Name
--------- | ----------- | ------------ | ------------ | ------------
12 | Mouse | John | Andy | Mark
13 | Keyboard | Dave | Fred | Leon



这是我的尝试。我知道如何加入 1 个字段,但不知道如何加入多个字段。谁能帮忙?谢谢!

List<Product> lstProduct = GetProducts();

List<Officer> lstOfficer = GetOfficers();

var merge = from p in lstProduct
join from o in lstOfficers on p.Officer1ID equals o.OfficerID
select new { ProductID = p.ProductID, ProductName = p.ProductName, OfficerName = o.OfficerName };

编辑
Product表中的OfficerID可以为0(Officer表中不存在)。

最佳答案

只需应用连接 3 次(每个 OfficerID 一次):

var merge = from p in lstProduct
join o1 in lstOfficer on p.Officer1ID equals o1.OfficerID
join o2 in lstOfficer on p.Officer2ID equals o2.OfficerID
join o3 in lstOfficer on p.Officer3ID equals o3.OfficerID
select new
{
ProductID = p.ProductID,
ProductName = p.ProductName,
Officer1Name = o1.OfficerName,
Officer2Name = o2.OfficerName,
Officer3Name = o3.OfficerName
};

关于c# - LINQ 使用左外连接对多个字段进行连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3994895/

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