0

我需要将一个数据表动态拆分为多个数据表,后续数据表的数量会有所不同。最终用户将输入一个值,这将确定从原始数据表派生的数据表的数量。例如:用户输入10,原来的dt有20行。将有 10 个 dt,每个创建 2 行。但是,如果原始 dt 有 11 行,则将有 9 个 dt 有 1 行和 1 个 dt 有 2 行创建。我如何在 vb.net 中完成此操作而无需硬编码一堆 if 规则?我已经通读并尝试了下面的帖子,但它仍然没有让我到达那里。

使用 LINQ 将集合拆分为“n”部分?

4

1 回答 1

3

您可以使用 LINQ GroupBy

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

Dim tableCount = 10  ' what the user entered '
Dim divisor = tbl1.Rows.Count / tableCount ' needed to identify each group '
Dim tables = 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())
于 2012-07-23T16:03:18.983 回答