我有3個表格。基本上,我有這樣的結構:LINQ中的簡單查詢
Customer
--------
IDCustomer
NameCustomer
Product
«««««««
IDProduct
NameProduct
Order
«««««
IDCustomer
IDProduct
如何得到這樣的結果,使用LINQ:
Result
««««««
NameCustomer
NameProduct
提前感謝!
我有3個表格。基本上,我有這樣的結構:LINQ中的簡單查詢
Customer
--------
IDCustomer
NameCustomer
Product
«««««««
IDProduct
NameProduct
Order
«««««
IDCustomer
IDProduct
如何得到這樣的結果,使用LINQ:
Result
««««««
NameCustomer
NameProduct
提前感謝!
假設你沒有在數據庫中建立正確的關係(或者你有沒有產生你的關係導航屬性),你可以做到以下幾點:
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
});
LINQ的整體美感的是,這應該是所有自動爲您完成自動生成的對象。
確保您的表關係在將它們移動到您的DBML文件之前在SQL Server中設置。在此之後,您的客戶表將附有訂單,其中您的產品將附加到您的訂單中。
如從客戶表(LINQ)中選擇將給你一個客戶列表,其中將有一個Order對象的IENumerable列表附加到每個客戶列表。
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直接對數據庫
一個測試你的LINQ查詢加入會做 – Magnus 2011-04-13 14:13:03