我有表的關聯,如(CaseClient是一個橋接表):如何查詢(LINQ)多表關聯鏈接?
- 案例有很多CaseClients
- 客戶端有很多CaseClients
- ClientType有許多CaseClient
最簡單的方法只是使用數據庫中的視圖,但我聽說與linq你可以加入這個莫名其妙?或者我應該只是在數據庫中創建視圖,LINQ查詢再次顯示該視圖?
我感謝您的評論
我有表的關聯,如(CaseClient是一個橋接表):如何查詢(LINQ)多表關聯鏈接?
最簡單的方法只是使用數據庫中的視圖,但我聽說與linq你可以加入這個莫名其妙?或者我應該只是在數據庫中創建視圖,LINQ查詢再次顯示該視圖?
我感謝您的評論
我想你想使用的加入方法,從你的橋接表和解決您的每一個關係。例如。
// Where CaseId and TypeId are your members of CaseClient
var x = caseClients.Join(cases, cc => cc.CaseId, c => c.Id)
.Join(types, cc => cc.TypeId, t => t.Id)
.Select();
以上代碼未測試(到目前爲止)和從存儲器。您可能需要在兩個連接之間加入一個選擇。
繼承人改編了我爲非常類似的情況所做的工作。只有名稱已被更改,以保護無辜。
IEnumerable<Case> getCaseByClient(int client_id)
{
var ret = from c in Cases
join cc in CasesClients
on c.Id equals cc.ClientId
join cl in Clients
on cc.ClientId equals client_id
select c;
return ret;
}
當然,這裏假設你的client_id字段是一個int,但這很容易修改。
的。選擇是不必要的(也許錯了,如果我沒有記錯),除非你有提取聯接的列的某個子集選擇功能。 – tvanfosson 2009-01-10 12:09:57