Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

IDataReader पर रहते हुए। पढ़ें उपज वापसी के साथ काम नहीं करता है लेकिन पाठक पर foreach करता है

यह while नहीं है बनाम foreach जिससे फर्क पड़ता है। यह कॉल है .Cast<T>()

पहले नमूने में, आप उसी . पर उपज कर रहे हैं जबकि लूप के प्रत्येक पुनरावृत्ति में वस्तु। यदि आप सावधान नहीं हैं, तो आप वास्तव में डेटा का उपयोग करने से पहले उपज इटरेटर को पूरा कर चुके हैं, और डेटा रीडर पहले ही निपटाया जाएगा। यह तब हो सकता है जब आप कहें, .ToList() इस विधि को कॉल करने के बाद। सूची में प्रत्येक रिकॉर्ड के लिए एक ही मूल्य के लिए आप सबसे अच्छी उम्मीद कर सकते हैं।
(प्रो टिप:अधिकांश समय आप .ToList() जब तक आपको बिल्कुल नहीं करना है। केवल IEnumerable रिकॉर्ड के साथ काम करना बेहतर है)।

दूसरे नमूने में, जब आप .Cast<T>() . को कॉल करते हैं डेटारेडर पर, आप प्रभावी रूप से डेटा की एक प्रति बना रहे हैं क्योंकि यह प्रत्येक रिकॉर्ड के माध्यम से पुनरावृत्त होता है। अब आप वही वस्तु नहीं दे रहे हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JDBC स्टेटमेंट उदाहरण - बैच इंसर्ट, अपडेट, डिलीट

  2. यदि कोई मान नहीं मिलता है तो मैं '0' वापस करने के लिए MySQL में SUM फ़ंक्शन कैसे प्राप्त करूं?

  3. SQL DML:गलत दिनांक मान (MySQL)

  4. ग्रुप बाय से पहले MySQL ऑर्डर

  5. PostgreSQL में Base58 एनकोडर फ़ंक्शन