参照データテーブルを使用してデータテーブルを新しいデータテーブルに変換するのが難しいと感じています。私の質問は紛らわしく、物事を説明するのが苦手なので、絵を描きました(以下を参照)。
メモリ上に 2 つのデータ テーブルがあり、参照用に 2 番目のマッピング テーブルを使用して 3 番目のデータ テーブルを作成する必要があります。列名は単なる例であり、ハードコードすることはできません。
誰かが私を助けてくれることを願っています。どうもありがとう。
参照データテーブルを使用してデータテーブルを新しいデータテーブルに変換するのが難しいと感じています。私の質問は紛らわしく、物事を説明するのが苦手なので、絵を描きました(以下を参照)。
メモリ上に 2 つのデータ テーブルがあり、参照用に 2 番目のマッピング テーブルを使用して 3 番目のデータ テーブルを作成する必要があります。列名は単なる例であり、ハードコードすることはできません。
誰かが私を助けてくれることを願っています。どうもありがとう。
これは最も最適化されたコードではないかもしれませんが、うまくいくようです...基本的に、マッピングテーブルの「新しい列」列の列名を使用して新しい DataTable を作成し、最初のテーブルの各行に対して、 「古い列」列の値を「新しい列」列に格納するマッピング テーブル
Protected Sub MapData()
Dim table1 = New DataTable()
Dim table2 = New DataTable()
Dim table3 = New DataTable()
With table1
.Columns.Add("Fore Name")
.Columns.Add("Sir Name")
.Columns.Add("Date of Birth")
.Columns.Add("Country")
Dim newRow = .NewRow()
newRow("Fore Name") = "AA"
newRow("Sir Name") = "AA"
newRow("Date of Birth") = "01.01.1999"
newRow("Country") = "UK"
.Rows.Add(newRow)
' etc
End With
With table2
.Columns.Add("Old Columns")
.Columns.Add("New Columns")
Dim newRow = .NewRow()
newRow("Old Columns") = "Fore Name"
newRow("New Columns") = "First Name"
.Rows.Add(newRow)
newRow = .NewRow()
newRow("Old Columns") = "Sir Name"
newRow("New Columns") = "Last Name"
.Rows.Add(newRow)
newRow = .NewRow()
newRow("Old Columns") = "Date of Birth"
newRow("New Columns") = "DOB"
.Rows.Add(newRow)
End With
For Each rowData As DataRow In table2.Rows
table3.Columns.Add(rowData("New Columns"))
Next
For Each table1Data As DataRow In table1.Rows
Dim newRow = table3.NewRow()
For Each rowMap As DataRow In table2.Rows
newRow(rowMap("New Columns")) = table1Data(rowMap("Old Columns"))
Next
table3.Rows.Add(newRow)
Next
End Sub
これを試してみてください。ただし、これは c# です。vb に変換できます。
targetTable.Columns["forename"].Caption = "First Name";// Rename the column
targetTable.Columns["SirName"].Caption = "Last Name";// Rename the column
targetTable.Columns["DateofBirth"].Caption = "DOB";// Rename the column
targetTable.Columns["country"].Table.Columns.Remove("country");//this will remove the column
//reorder column in case you need it
// targetTable.Columns["First Name"].SetOrdinal(0);
// targetTable.Columns["Last Name"].SetOrdinal(1);
// targetTable.Columns["DOB"].SetOrdinal(2);
// newtable =targettable.copy();// this will copy everthing to newtable
役に立たなかったら教えて