0

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

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 に答える