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)

Linq InnerJoin 4 tables

您可以使用

.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;