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