在循环中处理来自DataTable的X个记录

时间:2014-10-15 19:16:26

标签: vb.net loops for-loop

我有一个数据表,其中包含X个记录。 我使用SqlBulkCopy将这些记录发送到远程数据库。每个记录包含一个大blob,因此传输速度非常慢,因此,我想发送每个只包含10条记录的批量。

我目前所拥有的内容是上传第一条记录,然后以10组为单位上传,但省略了剩余记录。问题是我的循环错了。它应该处理来自0-1011-20

的记录

有什么想法吗?

For Each iRow As DataRow In dtSortedDataTable.Rows
dtToUpload.ImportRow(dtSortedDataTable.Rows(dtSortedDataTable.Rows.IndexOf(iRow)))
If iCurrent Mod 10 = 0 Then
    'Call function SqlBulkCopy to upload 10 records existing in the dtToUpload
End If
iCurrent += 1
Next

1 个答案:

答案 0 :(得分:2)

这里有几个问题:

  1. 假设iCurrent从0开始,为了获得您想要的行为,您需要向iCurrent添加一个:

    If (iCurrent + 1) Mod 10 = 0 Then
    
  2. 根据您尝试实施的逻辑,您声明的范围不正确。您想要处理0-9,10-19等

  3. 不要忘记在循环后添加批量复制上传或检查iCurrent是否是您正在处理的最后一项:

    If (iCurrent + 1) Mod 10 = 0 OrElse (iCurrent = dtSortedDataTable.Rows.Count - 1) Then