-2

所以我有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。

希望这没有使问题更加混乱!

4

2 回答 2

1

也许:

int count = costumer.GroupCustomers
    .SelectMany(gc => gc.Group.GroupEmployees)
    .Select(ge => ge.EmployeeID)
    .Distinct()
    .Count();
于 2012-12-13T16:43:13.220 回答
0

如果您的映射是正确的,您应该能够获得客户所在组中不同员工的数量,如下所示:

customer1.Groups.SelectMany(x => x.Employees).Distinct().Count()
于 2012-12-13T16:37:03.870 回答