所以我有3个主表(数据并不重要):
还有几个“多对多”表加入其他3个表:
从本质上讲,客户可以属于许多组,员工可以属于许多组。
现在让我们说我已经询问了一位特定的客户。所以我有类似的东西:
Customer customer1 = GetCustomer1();
现在,我希望了解客户所在的任何群体中的不同员工......
int count = customer1.GroupCustomers.SomeLinqMagicGoesHere
那么,我需要的Linq魔法是什么?
重要:使用linq-to-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 :(得分:1)
也许:
int count = costumer.GroupCustomers
.SelectMany(gc => gc.Group.GroupEmployees)
.Select(ge => ge.EmployeeID)
.Distinct()
.Count();
答案 1 :(得分:0)
如果您的映射是正确的,那么您应该能够获得客户所在组中不同员工的数量:
customer1.Groups.SelectMany(x => x.Employees).Distinct().Count()