2

对于以下场景,我需要一个代码示例。

假设我有 2 个表,“Order”和“Supplier”,“Order”有一个名为“SupplierId”的字段,每个供应商都有一个“Town”字段,您想退回所有位于“伦敦”,LINQ 会是什么样子。棘手的一点是没有外键,所以没有导航属性。

所以

Order
  SupplierId


Supplier
  Id
  City

链接是 Supplier.Id == Order.SupplierId

条件是:Supplier.Town = "London"

2 个表之间不存在外键。

那么实现上述目标的 LINQ 会是什么样子呢?

非常感谢。

4

1 回答 1

5

您应该能够明确地进行连接:

from order in db.Orders
join supplier in db.Suppliers on order.SupplierId equals supplier.Id
where supplier.City == "London"
select order;

(如果您愿意,您可以更早地过滤“仅伦敦内的供应商”,但我怀疑它会对查询计划产生任何重大影响。)

编辑:避免查询表达式-为简单起见移动“where”子句:

var londonSuppliers = db.Suppliers.Where(supplier => supplier.City == "London");
var query = db.Orders.Join(londonSuppliers,
                           order => order.SupplierId,
                           supplier => supplier.Id,
                           (order, supplier) => order);

(我假设你只想要订单。)

于 2013-09-24T13:45:41.200 回答