से भिन्न परिणाम देता है यदि मैं अपने इकाई ढांचे के परिणाम पर IQueryable पर चयन का उपयोग करता हूं तो मुझे परिणामस्वरूप 4 आइटम मिलेंगे।IQueryable <T> सूची <T>
यदि मैं एक IQueryable.ToList() पर चयन का उपयोग करता हूं तो मुझे सभी 36 आइटम मिलते हैं।
public ImagesGetModelView Get(int start, int count)
{
if (count <= 0) count = 9;
else if (count > ImageHandler.MaxResult) count = ImageHandler.MaxResult;
IQueryable<Image> imagesList = ImagesHandler.FetchRangeScore(start, count)
.Where(m => m.Domain == Database.Enums.ImageDomain.Gfycat);
//Works using list :(
//var list = imagesList.ToList();
//Select all subreddits once
//Returns 4 instead of 36 if not using the list ...
//Returns 1 instead of 2 with Distinct() if not using the list
IEnumerable<Subreddit> subreddits = imagesList
.Select(m => m.Subreddit); //.Distinct();
ImagesGetModelView result = new ImagesGetModelView()
{
Items = imagesList,
Subreddits = subreddits
};
return result;
}
public IQueryable<Image> FetchRangeScore(int a_start, int a_count)
{
return Repository.AllQueryable().OrderByDescending(m => m.Score)
.Skip(a_start).Take(a_count);
}
36 आइटम 2 subreddits अलग हो जाएगा से बाहर:
यहाँ समारोह के कोड है। लेकिन चूंकि 36 में से केवल 4 में से चयन 4 से प्राप्त किए जाते हैं() यह केवल 1 विशिष्ट पाता है।
तो क्या कुछ भी है जो मैं LINQ अभिव्यक्तियों के साथ सही डेटा प्राप्त करने के लिए कर सकता हूं ताकि अलग कथन काम करता है या क्या मुझे & चुनिंदा कार्यों के साथ जारी रखने से पहले इसे एक सूची में बनाना है?
संपादित करें:
पूरी क्वेरी की शुरुआत से अंत तक कहां स्थानांतरित करके। यह अभी सही ढंग से काम करता प्रतीत होता है। सभी 36 आइटम e.t.c लौटाएं चुनें ... जो बदले में अलग काम करता है क्योंकि यह 1 से अधिक अद्वितीय मान पा सकता है।
public IQueryable<Image> FetchRangeScore(int a_start, int a_count)
{
return Repository.AllQueryable()
.Where(m => m.Domain == Database.Enums.ImageDomain.Gfycat)
.OrderByDescending(m => m.Score)
.Skip(a_start).Take(a_count);
}
कुछ नकली डेटा यहां आपके बिंदु को चित्रित करने में मदद कर सकते हैं। – neontapir
मैं आपके तर्क के अलग-अलग संस्करण डालने की सिफारिश करता हूं (या आपने जो बदल दिया है उसका दूसरा कोड स्निपेट)। कोड के भीतर टिप्पणियों का पालन करना मुश्किल हो सकता है जिसे अलग-अलग करने की आवश्यकता है (उदाहरण के लिए मैं यह नहीं बता सकता कि आप उदाहरण टूट गए हैं या सही तरीके से काम कर रहे हैं)। – Guvante
क्या आप एक अलग कॉल करने से पहले पेजिंग कर रहे हैं? मैं आमतौर पर विपरीत क्रम की उम्मीद करता हूं। – Guvante