Mysql
 sql >> база данни >  >> RDS >> Mysql

докато на IDataReader.Read не работи с връщане на доходност, но foreach на reader го прави

Не е while срещу foreach това прави разликата. Това е извикването на .Cast<T>() .

В първата проба вие отстъпвате на същото обект във всяка итерация на цикъла while. Ако не сте внимателни, в крайна сметка сте завършили итератора на yield, преди действително да използвате данните и DataReader вече ще бъде изхвърлен. Това може да се случи, ако трябва да извикате .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. Как да филтрирам (или заменя) unicode символи, които биха заели повече от 3 байта в UTF-8?

  2. Задържане на множество елементи в колона на mysql

  3. MySQL:Заявка за списък с налични опции за SET

  4. Как да накарам първичен ключ да започва от 1000?

  5. utf8 кодиране в Perl и MySql