क्या आप सुनिश्चित हैं कि आपकी दूसरी क्वेरी वास्तव में ठीक है?
1) Id =d.Id, <=यह अल्पविराम क्यों (वास्तव में महत्वपूर्ण नहीं)? ('आईडी =' बेमानी है)
2) .Where(m => m.Trash ==false) <='ट्रैश' चयन में नहीं है, इसलिए इस समय इस संपत्ति का पता नहीं है
3) .OrderByDescending(f => f.Created) <='क्रिएटेड' के लिए idem
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
स्किप () और .टेक () के बिना, हमें अच्छा 'लेफ्ट आउटर जॉइन' मिलता है