2013-09-24 20 views
2

我需要一个代码示例请在下面的场景中使用。需要一个LINQ代码示例来链接两个没有外键的表格

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

所以

Order 
    SupplierId 


Supplier 
    Id 
    City 

Link是Supplier.Id == Order.SupplierId

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

任何外键2个表之间。

那么LINQ看起来会如何实现上述目标?

非常感谢。

回答

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

(我假设你只想要的顺序)

+0

谢谢Jon。非常感谢。你有这个Lambda版本吗?对不起忘了说。此外,Lambda比非Lambda LINQ更复杂吗?再次感谢。 – SamJolly

+0

为什么你需要非查询表达式形式?是的,它会更复杂。尽管编辑了答案。 –

+0

好的,我看到了这个问题。非常感谢您的及时帮助。 – SamJolly

相关问题