2012-12-13 68 views
-1

所以我有3個主表(該數據並不重要):如何計算多個多對多表關係中不同項目的數量?

  • 客戶
  • 集團
  • 員工

和一對夫婦的「多到多」表來加入其他3個表格:

  • GroupCustomer
  • GroupEmployee

實質上,一個客戶可以屬於多個組,而一個員工可以屬於多個組。

所以現在讓我們說我已經查詢過特定的客戶。所以,我有這樣的:

Customer customer1 = GetCustomer1(); 

現在,我想不同的員工認爲是在任何一組,客戶也是一個個性化......

int count = customer1.GroupCustomers.SomeLinqMagicGoesHere 

那麼,什麼是LINQ的我需要的魔法?

重要:該關係使用產生的LINQ到SQL


一些所需的輸入/輸出,如果它有助於解釋我的需求:

Customer 
-------- 
C1 
C2 

GroupCustomer 
-------- 
C1 | G1 
C1 | G2 
C2 | G1 

Group 
-------- 
G1 
G2 

GroupEmployee 
-------- 
E1 | G1 
E1 | G2 
E2 | G2 

Employee 
-------- 
E1 
E2 

所以計數我想對於C1應該是2.而C2的計數應該是1.

希望沒有混淆更多的問題!

+0

什麼GroupCustomers返回? – Paparazzi

+0

@Blam:應該說(我已經加入了)。通過linq-to-sql(dbml文件)生成「GroupCustomers」之類的關係 – musefan

+0

但是C2在G2中有兩個不同的員工 – Paparazzi

回答

1

可能:

int count = costumer.GroupCustomers 
    .SelectMany(gc => gc.Group.GroupEmployees) 
    .Select(ge => ge.EmployeeID) 
    .Distinct() 
    .Count(); 
+0

你必須通過你沒有包括的多對多表(即GroupCustomer) – musefan

+0

是的,已編輯,現在它應該工作 – lante

+0

似乎正是我想要的,謝謝 – musefan

0

如果你的映射是正確的,你應該能夠得到不同員工的計一組客戶在只需像這樣:

customer1.Groups.SelectMany(x => x.Employees).Distinct().Count() 
+0

'customer1'沒有'Groups'屬性。它必須首先經過「GroupCustomers」 – musefan

+0

是的,你是對的。蘭特有它。 –

相關問題