需要一个LINQ代码示例来链接两个没有外键的表

时间:2013-09-24 13:42:41

标签: linq linq-to-entities

我需要一个代码示例,请参阅以下场景。

假设我有2个表,“订单”和“供应商”,“订单”有一个名为“SupplierId”的字段,每个供应商都有一个“城镇”字段,您想要退回所有与供应商订购的订单位于“伦敦”,LINQ会是什么样子。棘手的一点是没有外键,因此没有导航属性。

所以

Order
  SupplierId


Supplier
  Id
  City

Link is Supplier.Id == Order.SupplierId

条件是:     其中Supplier.Town =“伦敦”

两张桌子之间没有外键。

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

非常感谢。

1 个答案:

答案 0 :(得分: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);

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