Jste si jisti, že váš druhý dotaz je opravdu v pořádku?
1) Id =d.Id, <=Proč tato čárka (není ve skutečnosti důležitá)? ('ID =' je nadbytečné)
2) .Where(m => m.Trash ==false) <='Koš' není ve výběru, takže tato vlastnost není v tuto chvíli známa
3) .OrderByDescending(f => f.Created) <=idem pro 'Created'
4) Proč čárka za .ToList()?
Zjednodušil jsem váš DDL (což není MWE) pomocí generovaných dat. Váš problém jsem reprodukoval ve VS2013.
Také jsem testoval váš dotaz pomocí LINQPad přímo proti databázi a mám stejný problém s třetím testem, pravděpodobně chyba v ovladači mysql:
trdposts.Select(a => new {
Created = a.Created,
Body = a.Body,
Comments = a.Posttrdcomments
.Select(d => new { Body = d.body, Id = d.Id, d.Created, d.Trash})
.Where(m => m.Trash == 1)
.OrderByDescending(f => f.Created)
.Skip(33)
.Take(10)
.ToList()
})
Zadejte kratší dotaz SQL:
SELECT t1.PostId, t1.body, t1.Id, t1.Created, t1.Trash
FROM trdposts AS t0
OUTER APPLY (
SELECT t2.body, t2.Created, t2.Id, t2.PostId, t2.Trash
FROM trdcomments AS t2
WHERE ((t2.PostId = t0.Id) AND (t2.Trash = 1))
ORDER BY t2.Created DESC
) AS t1
ORDER BY t1.Created DESC
Bez .Skip() a .Take() získáme dobré 'LEFT OUTER JOIN'