我需要将数据表动态拆分为多个数据表,后续数据表的数量会有所不同。最终用户将输入一个值,这将确定将从原始数据源派生的数据表的数量。例如:用户输入10,原始dt有20行。将有10个dt,每个创建2行。但是,如果原始dt有11行,那么将有9个dt的1行和1个dt,其中创建了2行。如果规则没有硬编码,我怎么能在vb.net中完成这个?我已经阅读并尝试了下面的帖子,但它仍然没有让我在那里。
答案 0 :(得分: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 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())