LINQ to Entities-group by und Count()
Habe ich die folgende LINQ-to-Entities-Abfrage
from r in ctx.Rs
join p in ctx.Ps on r.RK equals p.RK
group r by r.QK into gr
select new { QK = (int)gr.Key, Num = gr.Count() }
läuft gegen dieses schema
Table P Table R Table Q
PK*
RK ----> RK*
Text QK ------> QK*
Text Text
und gibt diese Meldung aus, wenn dort ist jeder Datensatz in Q ohne entsprechenden Datensatz in P: "Die Besetzung an den Werttyp 'Int32' ist fehlgeschlagen, da die materialisierte Wert null ist. Entweder der Ergebnis-Typ des generischen Parameters oder der Abfrage muss eine null-Typ".
Das problem ist die gr.Count() in der letzten Zeile, aber ich kann nicht finden eine Lösung. Ich habe versucht zu testen gr für null, aber nicht finden können, ein Weg, der funktioniert.
Ich habe gesehen, eine Reihe von Lösungen für ein ähnliches problem mit Sum() statt Count(), aber ich habe nicht in der Lage, passen Sie zu meinem problem.
Ich versucht, meine Abfrage Aussehen, die man in Group und Zählen in Linq-Problem, aber ich habe gerade eine andere Nachricht.
Schaute mich auch Group und Zählen in Entity Framework (und einige andere), aber das problem ist anders.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gruppe Schlüssel kann nicht null sein
PS.
Meist, brauchen Sie nicht 'BEITRETEN' - syntax in Entity Framework. siehe: Laden Von Verknüpften Entitäten
Schreiben beschreibenden-aussagekräftige Variablennamen deutlich verbessern würde, Ihre codes und machen es verständlich. Die Lesbarkeit ist nicht egal, in der realen Welt der Produktion.
Ich habe Probleme beim Lesen von Ihrem format. Aber können Sie versuchen:
Mit
DefaultIfEmpty
undx => x.RK != null
die änderungen.