私は次のオブジェクトを持っています:
public class Agency
{
public int ID;
public IEnumerable<BusinessUnit> BusinessUnits;
}
public class BusinessUnit
{
public int ID;
public decimal AmountSpent;
public IEnumerable<Client> Clients;
}
public class Client
{
public int ID;
public decimal AmountSpent;
}
これで、複数のエージェンシーを含むIEnumerable <Agency
>があり、これらのエージェンシーには複数のBusinessUnitが含まれ、それらのBusinessUnitには複数のクライアントが含まれています。
次のようになります。
Agency1
++ BusinessUnit1-$ 20
++++ Client1-$ 10
++++ Client2-$ 10Agency2
++ BusinessUnit2-$ 20
++++ Client1-$ 20Agency3
++ BusinessUnit1-$ 10
++++ Client5-$ 5
++++ Client6-$ 5
++ BusinessUnit2-$ 25
++++ Client1-$ 25
今、私が探しているのは、BusinessUnitsとClientsのリストを作成することですが、すべてのエージェンシーに対して、重複はありません。
だから、私はそのエージェンシーのリストを次のように変えたいと思っています:
すべてのエージェンシー
++BusinessUnit1-$30
++++ Client1-$ 10 ++++ Client2-
$ 10
++++ Client5-$ 5
++++ Client6-$ 5++ BusinessUnit2-$ 45
++++ Client1-$ 20
++++ Client1-$ 25
ここで、一意のBusinessUnitのリスト(その特定のBusinessUnitのすべてのインスタンスにわたる正しいAmountSpentの合計)と、その下の一意のクライアントのリスト、そのビジネスユニットの下のその特定のクライアントの各インスタンスの正しいAmountSpentの合計があります。 。
LINQを使用して、IEnumerable <Agency
> Agenciesリストをクエリして、正しい合計でBusinessUnit / Clientの組み合わせの個別のリストを返すことはできますか?