2011-04-13 116 views
0

我有3個表格。基本上,我有這樣的結構:LINQ中的簡單查詢

Customer 
-------- 
IDCustomer 
NameCustomer 

Product 
««««««« 
IDProduct 
NameProduct 

Order 
««««« 
IDCustomer 
IDProduct 

如何得到這樣的結果,使用LINQ:

Result 
«««««« 
NameCustomer 
NameProduct 

提前感謝!

+0

一個測試你的LINQ查詢加入會做 – Magnus 2011-04-13 14:13:03

回答

4

假設你沒有在數據庫中建立正確的關係(或者你有沒有產生你的關係導航屬性),你可以做到以下幾點:

var result = from c in _context.Customer 
      join o in _context.Order on c.IDCustomer equals o.IDCustomer 
      join p in _context.Product on o.IDProduct equals p.IDProduct 
      select new { c.NameCustomer, p.NameProduct } 

這將是容易得多,但是,要將適當的外鍵添加到數據庫並允許實體框架(或LINQ to SQL)爲您生成導航屬性。如果是這樣的話,這將是那麼容易,因爲:

var result = _context.Order.Select(o => new 
    { 
     o.Customer.NameCustomer, 
     o.Product.NameProduct 
    }); 
2

LINQ的整體美感的是,這應該是所有自動爲您完成自動生成的對象。

確保您的表關係在將它們移動到您的DBML文件之前在SQL Server中設置。在此之後,您的客戶表將附有訂單,其中您的產品將附加到您的訂單中。

如從客戶表(LINQ)中選擇將給你一個客戶列表,其中將有一個Order對象的IENumerable列表附加到每個客戶列表。

0
from t1 in Product 
join t2 in Order on t1.IDProduct equals t2.IDProduct 
join t3 in Customer on t2.IDCustomer equals t3.IDCustomer 
select new { t1.NameProduct, t3.NameCustomer} 

可以使用linqpad.exe直接對數據庫