2014-03-26 85 views
1

我在Linqpad中使用Linq to SQL來獲取某些數據。基於另一個Linq對象創建Linq Obect

我有3個表,我需要用它來執行以下步驟:通過郵政編碼

1)選擇客戶(Customer表)

2)獲取所有交易編號爲這些客戶(交易表)

3)獲取所有transaxction的ID(表逐項逐項項目)

所以我開始時很容易搶客戶:

string pc = "123"; 

var cust = 
from c in Customers 
where c.PostCode.StartsWith(pc) == true 
select c; 

現在我需要創建一個新的Linq對象,該對象具有基於「CustomerID」字段的事務表查找,但我不知道如何執行此操作。我曾嘗試過一些foreach循環,但無法獲得正確的語法。做了一些谷歌搜索,看到帖子說不使用foreach循環與linq對象,因爲你應該使用內置的Linq功能,但我找不到任何我需要的例子。

我對這樣一個基本問題表示歉意,但我剛開始使用Linq。

如何使用基於CustoomerID字段的所有交易記錄創建下一個Linq對象?

回答

1

您可以對聯合使用單個查詢。如果您有導航屬性在實體:

from c in Customers 
from t in c.Transactions 
from i in t.ItemizedItems 
where c.PostCode.StartsWith(pc) 
select i 

Labda語法:

Customers.Where(c => c.PostCode.StartsWith(pc)) 
     .SelectMany(c => c.Transactions) 
     .SelectMany(t => t.ItemizedItems); 

如果沒有導航屬性:

from c in Customers 
join t in Transactions on c.ID equals t.CustomerID 
join i in t.ItemizedItems on t.ID equals i.TransactionID 
where c.PostCode.StartsWith(pc) 
select i  
+1

謝謝!這完全回答了我的問題:) – Guerrilla