###質問内容
DataTableで行のコピーを行った際に気になることがありました。
サンプルのソースコードでは次の処理をしています。
・元となるDataTableのデータ分For文を回す
・ループ中の処理で、Flg列が"1"の場合、行をコピー
・コピーした行を、元となるDataTableの末尾に追加
- 質問1
行をコピーし元となるDataTableに追加していくので、
ループの上限に使用しているDataTable.Rows.Countは増えていきます。(デバッグで増えることを確認しました)
しかし、ループは元々入っているデータ分(3行)しかループしません。
想定では無限ループになると考えています。
なぜ、元々のデータ分しかループしないのでしょうか。
おそらく、DataTableの内部では一時テーブルを作成し、そちらを利用していると考えているのですが確証がありません。
ご存知の方がいらっしゃればお教えください。
###サンプルのソースコード
VB.net
1 Public Class Sample 2 Private Sub sampleDataTable() 3 Dim dt As New DataTable 4 dt.Columns.Add("Key", GetType(String)) 5 dt.Columns.Add("Flg", GetType(String)) 6 dt.Rows.Add("1", "0") 7 dt.Rows.Add("2", "1") 8 dt.Rows.Add("3", "0") 9 10 For i As Integer = 0 To dt.Rows.Count 11 ' フラグが"1"の場合行をコピー 12 If dt(i)("Flg") = "1" Then 13 dt.ImportRow(dt.Rows(i)) 14 End If 15 Next 16 17 End Sub 18 End Class
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/09 05:10