我發現很難使用參考數據表將數據錶轉換爲新的數據表。我的問題很混亂,我不擅長解釋事物,所以我畫了一張照片(見下文)。如何使用參考數據錶轉換數據表asp.net
我在內存上有兩個數據表,我需要使用第二個映射表創建第三個數據表以供參考。列名僅僅是例子,它不能被硬編碼。
希望有人能幫助我。非常感謝。
我發現很難使用參考數據表將數據錶轉換爲新的數據表。我的問題很混亂,我不擅長解釋事物,所以我畫了一張照片(見下文)。如何使用參考數據錶轉換數據表asp.net
我在內存上有兩個數據表,我需要使用第二個映射表創建第三個數據表以供參考。列名僅僅是例子,它不能被硬編碼。
希望有人能幫助我。非常感謝。
這可能不是最優化的代碼,但它似乎工作...基本上使用映射表的「新列」列中的列名創建新的DataTable,然後對於第一個表中的每一行,遍歷映射表,存儲「Old 「新列」列中的「列」列
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
分割秒,我想,..在這裏再次..硬編碼列..現在我明白你只是做了完美....感謝很多..這是太棒了。 ..... – lawphotog 2012-04-26 15:51:48
試試這個,但是這是在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
讓我知道,如果它沒有幫助
你可以用這兩個表的關係,然後隱藏或刪除列或更改列名稱,而不是 – skhurams 2012-04-26 12:40:40
謝謝,但我奮力如何真正做到這一點..你能解釋我升技更多? – lawphotog 2012-04-26 13:08:37