Lassen Sie uns sagen, ich habe diese SQL:LINQ - LEFT JOIN, Gruppe By, und Graf
SELECT p.ParentId, COUNT(c.ChildId)
FROM ParentTable p
LEFT OUTER JOIN ChildTable c ON p.ParentId = c.ChildParentId
GROUP BY p.ParentId
Wie kann ich dies in LINQ to SQL übersetzen? Ich bin bei COUNT (c.ChildId) hängengeblieben, das generierte SQL scheint immer COUNT (*) auszugeben. Hier ist, was ich bis jetzt bekam:
from p in context.ParentTable
join c in context.ChildTable on p.ParentId equals c.ChildParentId into j1
from j2 in j1.DefaultIfEmpty()
group j2 by p.ParentId into grouped
select new { ParentId = grouped.Key, Count = grouped.Count() }
Vielen Dank!
OK, das funktioniert, aber warum? Wie denkst du darüber? Wie zählen NULL-Werte uns nicht wie COUNT (C.ChildId)? Vielen Dank. – pbz
So funktioniert SQL. COUNT (Feldname) zählt die Zeilen in diesem Feld, die nicht null sind. Vielleicht bekomme ich Ihre Frage nicht, bitte klären Sie, ob das der Fall ist. –
Ich denke, ich dachte immer über das Zählen von Zeilen nach, aber Sie haben Recht, nur die Nicht-Null-Werte werden gezählt. Vielen Dank. – pbz