2

私は、LINQを使用して2つの異なるデータベースに存在する企業の従業員を集約する仕事をしています。基準は、同じ名前の会社を見つけ、これらの会社の同じ名前の部門も見つけて、すべての従業員を新しい会社オブジェクトにマージすることです。

2 つのデータベースのすべての会社を 1 つList<Company>にまとめましたが、関数を使用Aggregateして同じ名前の会社をマージし、同じ名前の部門を見つけてすべての従業員をマージする方法はありますか? Aggregate関数を使用すると、「1レベル」のデータをマージするのは簡単なようですが、3レベルの集計(会社>部門>従業員)に入るのに苦労しています

私のList<Company> AllCompaniesオブジェクトの例:

Company       Department      Employees   Source
-----------|--------------|-------------|---------
ABC Inc    |  Sales       | Sam         | DB1
           |              | Laura       |
-----------|--------------|-------------|---------
ABC Inc    |  Sales       | Joe         | DB2
-----------|--------------|-------------|---------
ABC Inc    |  Sales       | Joe         | DB1
-----------|--------------|-------------|---------
ABC Inc    |  IT          | Matt        | DB2
-----------|--------------|-------------|---------
XYZ Inc    |  Sales       | Steve       | DB1
-----------|--------------|-------------|---------
XYZ Inc    |  Sales       | Steve       | DB2 
-----------|--------------|-------------|---------
XYZ Inc    |  HR          | Mark        | DB2

上記を次のように変換しようとしています。

Company       Department      Employees
-----------|--------------|-------------
ABC Inc    |  Sales       | Sam
           |              | Laura
           |              | Joe
           |--------------|-------------
           |  IT          | Matt
-----------|--------------|-------------
XYZ Inc    |  Sales       | Steve
           |--------------|-------------
           |  HR          | Mark

この例のために、私の一致基準は名前のみです。

4

1 に答える 1

4
 from c in allCompanies
 group c by c.Company into departments
 select new {
    Company = departments.Key,
    Departments = from d in departments
                  group d by d.Department into employees
                  select new {
                      Department = employees.Key,
                      Employees = employees.Select(e => e.Employees)
                                           .Distinct()
                  }
 }
于 2013-03-15T10:28:58.530 に答える