-2

したがって、3つのメインテーブルがあります(データは重要ではありません)。

  • お客様
  • グループ
  • 従業員

そして、他の3つのテーブルを結合するための「多対多」のテーブルがいくつかあります。

  • GroupCustomer
  • GroupEmployee

本質的に、顧客は多くのグループに属することができ、従業員は多くのグループに属することができます。

では、特定の顧客について問い合わせたとしましょう。だから私は次のようなものを持っています:

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 に答える