c# - सूची () के बजाय AsQueryable () का उपयोग क्यों करें?




2 Answers

AsQueryable सिर्फ एक क्वेरी बनाता है, एक सूची पाने के लिए आवश्यक निर्देश। आप बाद में क्वेरी में भविष्य में परिवर्तन कर सकते हैं जैसे नए जोड़ना, जो डेटाबेस स्तर पर सभी तरह से भेजे जाते हैं।

AsList स्मृति में सभी वस्तुओं के साथ एक वास्तविक सूची देता है। यदि आप एक नया जोड़ते हैं, जहां पर इसका उपयोग किया जाता है, तो आपको डेटाबेस को तेज़ फ़िल्टरिंग नहीं मिलता है। इसके बजाय आपको सूची में सारी जानकारी मिलती है और फिर उस एप्लिकेशन को फ़िल्टर करें जिसे आपको एप्लिकेशन में आवश्यकता नहीं है।

तो मूल रूप से यह स्वयं को करने से पहले आखिरी संभव क्षण तक इंतजार करने के लिए नीचे आता है।

मैं गैर-टेस्ट रिपोजिटरी के कार्यान्वयन के आधार के रूप में इकाई फ्रेमवर्क और LINQ साथ डेटा पहुंच के लिए रिपोजिटरी पैटर्न का उपयोग कर रहा हूं। अधिकांश नमूनों को मैं वापस देखता हूं Asquable () जब कॉल सूची <T> के बजाय एन रिकॉर्ड देता है। ऐसा करने का क्या फायदा है?




AsQueryable IEnumerable<T> लिए एक एक्सटेंशन विधि है जो दो चीजें कर सकती है:

  • यदि IEnumerable<T> IQueryable<T> IEnumerable<T> लागू करता है, कुछ भी नहीं करता है।
  • अन्यथा 'नकली' IEnumerable<T> ( EnumerableQuery<T> ) बनाता है जो लैम्बडास को संकलित करने और गणना करने योग्य एक्सटेंशन विधियों को कॉल करने वाली प्रत्येक विधि को लागू करता है।

इसलिए AsQueryable का उपयोग करने वाले अधिकांश मामलों में बेकार है, जब तक कि आपको किसी विधि के लिए IQueryable पास करने के लिए मजबूर नहीं किया जाता है और आपके पास एक आईनेमरेबल है, यह एक हैक है।

नोट: AsQueryable एक हैक है, निश्चित रूप से IQueryable नहीं है!




Related

c# linq repository iqueryable