我需要一个代码示例,请参阅以下场景。
假设我有2个表,“订单”和“供应商”,“订单”有一个名为“SupplierId”的字段,每个供应商都有一个“城镇”字段,您想要退回所有与供应商订购的订单位于“伦敦”,LINQ会是什么样子。棘手的一点是没有外键,因此没有导航属性。
所以
Order
SupplierId
Supplier
Id
City
Link is Supplier.Id == Order.SupplierId
条件是: 其中Supplier.Town =“伦敦”
两张桌子之间没有外键。
那么为了实现上述目标,LINQ会是什么样的呢?
非常感谢。
答案 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);
(我假设你只想要订单。)