मैं .NET पर थोड़ी नौसिखिया हूं, और मैं सोच रहा था कि linq कैसे काम करता है, क्योंकि आप कई linq प्रश्नों का पालन कर सकते हैं, एक के बाद एक, लेकिन उनमें से कोई भी वास्तव में निष्पादित नहीं किया जाता है जब तक कि उन्हें जानकारी स्थानांतरित करने या परिवर्तित करने के लिए उपयोग नहीं किया जाता सूची, आदि
IQueryable<T>
का उपयोग करके, linq क्वेरी प्राप्त करने के 2 महत्वपूर्ण तरीके हैं, जो दर्शाता है कि एसक्यूएल पर सीधे फ़िल्टर कहां है, और आईनेमेरेबल जो सभी रिकॉर्ड्स प्राप्त करते हैं और फिर यह स्मृति पर उनके साथ काम करते हैं।एक IQueryable linq क्वेरी को IENumerable <T> में कनवर्ट करने के लिए linq अनुकूलित तरीके से रद्द करता है?
//Linq dynamic library
IQueryable<Table> myResult = db.Categories
.Where(a => a.Name.Contains(StringName))
.OrderBy("Name")
.Skip(0)
.Take(10);
if (myResult != null)
{
return myResult.AsEnumerable();
}
else
{ return null; }
Depsite मैं LINQ गतिशील पुस्तकालय का उपयोग कर रहा है, इस क्वेरी से सीधा परिणाम IQueryable<T>
पर प्राप्त किया जा रहा है, यदि क्वेरी अंत में IEnumerable
रूप में वापस आ जा रहा है, यह है: हालांकि, के लिए इस कोड पर एक नज़र डालें सचमुच एसक्यूएल पर फ़िल्टर किया जा रहा है? या यह स्मृति में है?
इसका उत्तर देने का सबसे अच्छा तरीका डेटा संदर्भ की 'लॉग' संपत्ति को देखना और स्वयं के लिए देखना है। अपनी क्वेरी पर विभिन्न भिन्नताओं के साथ प्रयोग करें और देखें कि यह वास्तव में * निष्पादित * को कैसे प्रभावित करता है। – Servy
मुझे खेद है, मैं लॉग कैसे देखूं? –
ठीक है, यह शायद उस प्रकार की उस संपत्ति के लिए Google, या एमएसडीएन दस्तावेज़ के लिए एक अच्छा सवाल है; अगर मेमोरी परोसता है तो वहां एक अच्छा उदाहरण है। – Servy