我的目标是返回仅包含来自特定商家的orderItem的订单列表。我目前的解决方案是遍历每个订单,然后遍历每个订单商品和每个商品。我想这不是最好的做法,但我很难弄清楚如何构建单个查询来检索特定于商家的订单。
我有4张桌子
商家(id字段为merchantID)
订单(id字段为orderID)
orderItems(id字段是orderItemID,FK listingID)
列表(id字段是listingID和FK merchantID)
答案 0 :(得分:1)
您可以使用.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;
答案 1 :(得分:1)
我不知道你的结构,但这样的事情应该有效。
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;