Linq查询连接4个表

本文关键字:4个表 连接 查询 Linq | 更新日期: 2023-09-27 18:09:37

我有一个名为delivery的表,列为id、shiftid、occurrence、delfee)。我还有三张桌子delcash delcc delsplitDel cash有列(id,cost,paid), delcc有列(id,cccost,ccpaid,cashtip), delsplit有列(id,cashcost,cashpaid,cccost,ccpaid)。id根据付款类型将交付条目链接到其他三个表之一。我试图得到一个列表,其中的表以某种方式连接在一起,这样我就可以通过列表迭代,并在视图中得到一个表,显示每次交付的发生顺序以及每次交付的小费和交付费用。你知道是否有可能做到这一点吗?还是应该使用SQL?

SELECT deliveries.occurrence, deliveries.delfee,delcash.cost,delcash.paid,delcc.cost,delcc.paid,delcc.cashtip,
delsplit.cashcost,delsplit.cashpaid,delsplit.cccost,delsplit.ccpaid
FROM deliveries
LEFT JOIN delcash
ON deliveries.id = delcash.id
LEFT JOIN delcc
ON deliveries.id = delcc.id
LEFT JOIN delsplit
ON deliveries.id = delsplit.id

Linq查询连接4个表

您可以创建一个新类,并让三个成本表从该类继承,然后您可以应用每个具体类型的表策略来映射表。

看:http://weblogs.asp.net/manavi/archive/2010/12/24/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-1-table-per-hierarchy-tph.aspx

重新设计您的数据库并应用Table per type策略。

试试这样:

var joinedDel = from delivery in tblDeliveries
                join delC in tblDelCash on delivery.id equals delC.id
                join delCC in tblDelCreditCard on delivery.id equals delCC.id
                join delSplit in tblDelSplit on delivery.id equals delSplit.id
                select new {
                      //Then create a new instance of Anonymous object where you will set all values of its properties
                      //For example, you can set ShiftID = delivery.ShiftID
                };

我还建议首先规范化您的表(参见此链接以供参考)。这将使您更加了解如何正确地连接这些表。