Hallo,
Ik probeer met Linq de topics met het aantal replies uit mijn database te krijgen, maar dat wil nog niet zo lukken. Probleem is de count, waarmee ik in de knoei ga.
De query gaat maar over 1 tabel, maar die komt wel meerdere keren voor. In de join met zichzelf zit een aggregatie functie (count).
Dit is de query die wel goed werkt:
Hierbij krijg ik twee resultaten terug: één Message met twee child-Messages, en één Message met geen child-Messages.
Met linq kwam ik tot:
Ik krijg dan echter alleen de Message terug met twee child-Messages, de andere zie ik überhaupt niet eens.
Hoewel je denkt dat dit toch een bekend issue zou zijn kan ik er niets over vinden (of ik ben slecht in googlen
). Om één of andere reden moet die join left worden, en ik denk dat hij standaard een inner pakt ofzo?
Heeft iemand een suggestie?
Ik probeer met Linq de topics met het aantal replies uit mijn database te krijgen, maar dat wil nog niet zo lukken. Probleem is de count, waarmee ik in de knoei ga.
De query gaat maar over 1 tabel, maar die komt wel meerdere keren voor. In de join met zichzelf zit een aggregatie functie (count).
Dit is de query die wel goed werkt:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| SELECT t.MessageId MessageId, COUNT(m.MessageId) Replies FROM Message t LEFT JOIN Message m ON m.ParentMessageId = t.MessageId WHERE t.ParentMessageId IS NULL AND t.CategoryId = 1 GROUP BY t.MessageId |
Hierbij krijg ik twee resultaten terug: één Message met twee child-Messages, en één Message met geen child-Messages.
Met linq kwam ik tot:
C#:
1
2
3
4
5
6
| var test = from t in set.Messages join m in set.Messages on t.MessageId equals m.ParentMessageId where t.CategoryId == 1 group m by new { t.MessageId, m.ParentMessageId } into bla select new { bla.Key.MessageId, ra = bla.Count() }; |
Ik krijg dan echter alleen de Message terug met twee child-Messages, de andere zie ik überhaupt niet eens.
Hoewel je denkt dat dit toch een bekend issue zou zijn kan ik er niets over vinden (of ik ben slecht in googlen
Heeft iemand een suggestie?