【发布时间】:2014-07-28 17:50:08
【问题描述】:
我有以下表结构
Orders
OrderID PK
PartyAddresses
PartyAddressID PK
然后我有一个将 PartyAddress 连接到订单的连接表
OrderAddresses
OrderAddressID PK
OrderID FK to Orders
PartyAddressID FK to PartyAddresses
AddressType
我要转换的 sql 语句是
SELECT
*
FROM
Orders o LEFT JOIN OrdersAddresses oa
ON
o.OrderID = oa.OrderID
LEFT JOIN PartyAddresses pa
ON
pa.PartyAddressID = oa.PartyAddressID
WHERE
oa.AddressType = 'SHIP'
我无法将其复制到 Linq lambda 语句中
我已经能够通过从 OrdersAddress 表开始检索我想要的数据
OrdersAddresses.Include("Orders").Include("PartyAddresses").Where(oa=>oa.AddressType=="Ship");
但我需要IEnumerable<Orders> 形式的结果
更新
我想改写我的问题 - 给定以下存储库功能
public IQueryable<Orders> OrdersWithAddresses()
{
return _context.Orders.Include("OrdersAddresses").Include("OrdersAddresses.PartyAddresses");
}
我将如何添加到表达式树以仅实际返回“SHIP”的订单地址
【问题讨论】:
-
当你过滤时第一个左连接有什么意义?
-
澄清了来源以及为什么使用左连接
-
我认为要走的路是 Gert Arnold 在stackoverflow.com/questions/16798796/…的答案
标签: c# sql linq entity-framework linq-to-entities