sql >> データベース >  >> RDS >> Mysql

IDataReader.Readではyieldreturnは機能しませんが、リーダーのforeachは機能します

    whileではありません vs foreach それが違いを生みます。 .Cast<T>()の呼び出しです 。

    最初のサンプルでは、​​同じで譲歩しています。 whileループの各反復のオブジェクト。注意しないと、実際にデータを使用する前にyieldイテレータを完了してしまい、DataReaderはすでに破棄されています。これは、たとえば.ToList()を呼び出す場合に発生する可能性があります このメソッドを呼び出した後。リスト内のすべてのレコードが同じ値を持つことを期待できる最善の方法です。
    (上級者向けのヒント:ほとんどの場合、.ToList() あなたが絶対にしなければならないまで。 IEnumerableレコードのみを操作することをお勧めします。

    2番目のサンプルでは、​​.Cast<T>()を呼び出すと データリーダーでは、各レコードを反復処理するときにデータのコピーを効果的に作成しています。これで、同じオブジェクトを生成しなくなりました。



    1. 金額をmysqlに保存する

    2. CASE WHENを使用する場合、Laravelでorder byを使用するにはどうすればよいですか?

    3. javascriptを日付オブジェクトに変換してmysqlの日付形式に変換する(YYYY-MM-DD)

    4. Javaでの並行コレクションAPIの概要