データテーブルを複数のデータテーブルに動的に分割する必要があり、後続のデータテーブルの数は異なります。エンド ユーザーが値を入力すると、元のデータテーブルから派生するデータ テーブルの数が決まります。例: ユーザーが 10 を入力すると、元の dt には 20 行あります。10 個の dt があり、それぞれ 2 行が作成されます。ただし、元の dt に 11 行ある場合、1 行の 9 つの dt と 2 行の 1 つの dt が作成されます。ルールの束をハードコーディングせずにvb.netでこれを達成するにはどうすればよいですか? 以下の投稿を読んで試してみましたが、まだそこにたどり着きません。
4021 次
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 に答える