Casablanca: LINQ-Anweisung

Beitrag lesen

Hallo Forum,

ich brauche wieder mal eure Hilfe bei einer LINQ-Abfrage.
Ich habe da 3 Tabellen wie folgt. Ich benenne nur die relevanten Spalten:

Tabelle A:
AID
1
2
3
4

Tabelle B: (Verknüpft mit Tabelle A durch AID)
BID  | AID | BName
1    | 1   | a
2    | 1   | b
3    | 1   | c
4    | 2   | d
5    | 2   | f
6    | 3   | g
7    | 4   | h
8    | 3   | i

Tabelle C:  (Verknüpft mit Tabelle B durch BID)
CID | BID | CName
1   | 1   | aa
2   | 1   | bb
3   | 2   | cc
4   | 3   | dd
5   | 3   | ee
6   | 1   | ff
7   | 4   | ff
8   | 4   | ff
9   | 5   | ff

Ich brauche nun diese Anzeige:
A_1 hat 3XB und 6XC (BID -> 1, 2, 3 und CID -> 1, 2, 3, 4, 5, 6)
A_2 hat 2XB und 3XC (BID -> 4, 5 und CID -> 7, 8, 9)
A_3 hat 2XB und 0XC (BID -> 6, 8)
A_4 hat 1XB und 0XC (BID -> 7)

Ich habe bereits versucht über diese LINQ-Anweisung das Ergebnis zu bekommen, es gelingt mir aber nicht:

  
from b in B  
join a in A on b.AID equals a.AID  
join c in C on b.BID equals c.BID  
group b by new { a.AID, b.AID, c.BID } into grp  
select new PlantDeviceViewModel  
{  
  myAID = grp.Key.AID,  
  AnzahlB = grp.Count(),  
  ANZAHLC = grp.Select(x => x.CID).Distinct().Count()  
};  
  

Hat jemand eventuell eine Idee, wie ich das Ergebnis wie oben beschreiebn erhalten kann?

Danke im Voraus