将巨大的DataTable平均分配给多个

时间:2012-08-18 21:32:34

标签: .net vb.net datatable

我有一个大约156K的数据表,我想制作6个数据表,并将记录分成每个数据,如table1将保存0到30k的行,表2将保存30k1到60k的行,依此类推。< / p>

大表的订购数字列从0到14

有关如何在不循环的情况下执行此操作的任何建议?

2 个答案:

答案 0 :(得分:1)

您可以使用LINQ的GroupBy

TESTDATA:

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()

请注意,这会将它们分成每个26000行的表,因为156000/6 = 26000.

答案 1 :(得分:0)

在数据库级别上执行此操作吗?

从您的表格中选择其他人然后删除原始表格。