Linq InnerJoin 4 tables
本文关键字:tables InnerJoin Linq | 更新日期: 2023-09-27 18:30:58
我的目标是返回仅包含来自特定商家的订单项的订单列表。我目前的解决方案是遍历每个订单,然后遍历每个订单项目和每个列表。我想这不是最佳实践,但我很难弄清楚如何构建单个查询来检索商家特定的订单。
我有4张桌子
商家(ID 字段为商家 ID)
订单(ID 字段为订单 ID)
orderItems(id 字段是 orderItemID 和 FK listingID)
列表(ID 字段是列表 ID 和 FK 商家 ID)
您可以使用
.Any()
来帮助您到达所需的位置:
var ordersFromMerchant = db.Orders
.Where(o => o.Items.Any(oi => oi.Listing.merchantID = 10);
我已经对导航属性的名称进行了假设,但如果它们不匹配,您应该能够对其进行调整。
如果您更喜欢 linq 语法,可以使用:
var ordersFromMerchant = from o in db.Orders
join oi in db.orderItems on o.orderID equals oi.orderID
join l in db.listings on oi.listingID equals l.listingID
where l.merchantID = 10
select o;
我不知道
你的结构,但这样的东西应该可以工作。
var query = from o in orders
join oi in orderItems on o.id equals io.orderID
join l in listings on oi.listingID equals l.id
where l.merchantID == merchantID
select o;