【发布时间】:2011-04-29 00:52:52
【问题描述】:
我有产品表和官员表如下:
产品
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 表中不存在)。
【问题讨论】:
-
名为
Foo1、Foo2等的列通常表明您的数据模型有误。 -
@mark byers:应该支持某种关系表(只是为了完成您的评论)
-
我们的客户有各种产品。不同的产品会有不同的产品官、财务官、项目官指派负责产品。这是要求。