0

私は約 156K の Datatable を持っており、6 つの Datatable を作成し、table1 が 0 から 30k までの行を保持し、table 2 が 30k1 から 60k までの行を保持するように、それぞれにレコードを分割したいと考えています。

大きなテーブルは、0 から 14 までの数値列で並べられています

ループせずにこれを行う方法に関する提案はありますか?

4

2 に答える 2

1

LINQ を使用できますGroupBy

テストデータ:

Dim tbl1 = New DataTable
tbl1.Columns.Add("ID", GetType(Int32))
tbl1.Columns.Add("Text", GetType(String))
For rowIndex As Int32 = 1 To 156000
    tbl1.Rows.Add(rowIndex, "Row " & rowIndex)
Next

複数のテーブルに分割:

Dim tableCount = 6 
Dim divisor = tbl1.Rows.Count / tableCount ' needed to identify each group '
Dim tables() As DataTable = tbl1.AsEnumerable().
        Select(Function(r, i) New With {.Row = r, .Index = i}).
        GroupBy(Function(x) Math.Floor(x.Index / divisor)).
        Select(Function(g) g.Select(Function(x) x.Row).CopyToDataTable()).
        ToArray()

これにより、156000 / 6 = 26000 なので、それぞれが 26000 行のテーブルに分割されることに注意してください。

于 2012-08-18T21:37:08.237 に答える
0

データベースレベルでそれを行いますか?

テーブルから他のテーブルを選択してから、元のテーブルを削除します。

于 2012-08-18T21:35:18.803 に答える