Mysql
 sql >> Baza danych >  >> RDS >> Mysql

podczas gdy na IDataReader.Read nie działa ze zwrotem wydajności, ale foreach na czytniku działa

To nie jest while vs foreach to robi różnicę. To wywołanie .Cast<T>() .

W pierwszym przykładzie poddajesz się takim samym obiekt w każdej iteracji pętli while. Jeśli nie zachowasz ostrożności, zakończysz iterator zysku przed faktycznym użyciem danych, a DataReader zostanie już usunięty. Może się to zdarzyć, jeśli na przykład wywołasz .ToList() po wywołaniu tej metody. Najlepsze, na co możesz mieć nadzieję, to to, że każdy rekord na liście będzie miał taką samą wartość.
(Wskazówka dla profesjonalistów:w większości przypadków nie chcesz dzwonić do .ToList() dopóki absolutnie nie będziesz musiał. Lepiej po prostu pracować z rekordami IEnumerable).

W drugim przykładzie po wywołaniu .Cast<T>() na czytniku danych, skutecznie tworzysz kopię danych, gdy przechodzą one przez każdy rekord. Teraz nie dajesz już tego samego obiektu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DECIMAL mysql i przestrzeń dyskowa?

  2. Struktura tabeli mysql z wieloma zmiennymi

  3. MySQL - Zliczanie wierszy i problem z lewym złączeniem

  4. MySQL:Klauzula IN dla dat POMIĘDZY datą początkową i końcową?

  5. Dlaczego null<>null=null w mysql