Сигурни ли сте, че втората ви заявка наистина е наред?
1) Id =d.Id, <=Защо тази запетая (не е много важна)? („ID =“ е излишен)
2) .Where(m => m.Trash ==false) <='Trash' не е в избраното, така че това свойство в момента не е известно
3) .OrderByDescending(f => f.Created) <=idem за 'Created'
4) Защо запетая след .ToList()?
Опростих вашия DDL (който не е MWE) с генерирани данни. Възпроизводих проблема ви във VS2013.
Тествах също вашата заявка с LINQPad директно срещу базата данни и имам същия проблем с третия тест, вероятно грешка в драйвера 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()
})
Дайте по-кратка 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
Без .Skip() и .Take(), получаваме добро 'LEFT OUTER JOIN'