प्रश्नों को पढ़ना here और here ने मुझे स्थिति में कुछ अंतर्दृष्टि दी है, और ऐसा लगता है कि AsEnumerable स्मृति स्मृति का उपयोग करना है। क्या इस LINQ को करने का एक बेहतर तरीका है और जिस तरह से यह किया गया है, क्या वह डेटा विश्वसनीय है?LINQ इकाई पर AsEnumerable() का प्रभाव क्या है?
असीमित परिणामों को हटाने में "स्थानीय अनुक्रम का उपयोग LINQ में क्वेरी ऑपरेटर को छोड़कर क्वेरी ऑपरेटर के SQL कार्यान्वयन में नहीं किया जा सकता है।"
var results = from p in pollcards.AsEnumerable()
join s in spoils.AsEnumerable() on new { Ocr = p.OCR, fileName = p.PrintFilename } equals new { Ocr = s.seq, fileName = s.inputFileName }
where p.Version == null
orderby s.fileOrdering, s.seq
select new ReportSpoilsEntity
{
seq = s.seq,
fileOrdering = s.fileOrdering,
inputFileName = s.inputFileName,
Ocr = p.OCR,
ElectorName = p.ElectorName
};
त्रुटि जो मैं metioned दोनों AsEnumerables को हटाते समय आया था। (मैंने केवल एक को हटाने की कोशिश नहीं की है)। क्या इससे कोई फर्क पड़ता है कि लूट और पोलकार्ड LINQ स्टेटमेंट स्वयं हैं? (एक IQueryable और एक संग्रह ) –
Andy
@ एंडी: हां, तथ्य यह है कि 'spoils' एक स्मृति संग्रह है, निश्चित रूप से प्रासंगिक है। मुझे लगता है कि एक और डीबी क्वेरी थी। मैं डेटाबेस के आधे से बाहर आधे से जुड़ने के तरीके के बारे में नहीं जानता। क्या 'spoils' * मूल रूप से * डेटाबेस से आया था? –
लूट 2 क्विरी, आखिरी 10 के लिए शीर्ष 10 में से एक के लिए बनाया गया है, परिणाम पर एक संघ कर रहा है, और फिर उस संघ के माध्यम से प्रत्येक के लिए संग्रह को पॉप्युलेट कर रहा है। मुझे यकीन नहीं है कि हम यूनियन क्यों नहीं लौटते हैं और इसे एक संग्रह से संग्रह में परिवर्तित करते हैं। (IQuerryable को वापस करने के लिए AsEnumerables की आवश्यकता को हल कर देगा?) – Andy