2012-04-26 8 views
0

참조 데이터 테이블을 사용하여 데이터 테이블을 새로운 데이터 테이블로 변환하는 데 어려움이 있습니다. 내 질문이 혼란스럽고 나는 그림을 그리기 위해 사물을 설명하는 것이 좋지 않습니다 (아래 참조).참조 데이터 테이블 asp.net을 사용하여 데이터 테이블을 변환하는 방법

메모리에 두 개의 데이터 테이블이 있으며 두 번째 매핑 테이블을 사용하여 세 번째 데이터 테이블을 만들어야합니다. 열 이름은 예를 들어 하드 코드 할 수 없습니다.

누군가 나를 도울 수 있기를 바랍니다. 고마워.

enter image description here

+0

이 두 테이블 관계를 만들 수 있습니다 다음 숨기거나 열을 제거하거나 열 이름 대신 – skhurams

+0

감사를 변경하지만 난 그것을 실제로하는 방법을 고민하고 .. 더 ABIT 나를 설명 할 수 있습니까? – lawphotog

답변

1

이 가장 최적화 된 코드를하지 않을 수 있습니다 도움이 didnt가 있으면 알려 주시기하지만, 작동하는 것 같습니다 ... 기본적으로 매핑 테이블의 "New Columns"열의 열 이름을 사용하여 새 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 
+0

초의 분할, 나는 생각했다. .. 여기에 다시 와서 .. 하드 코드 된 열 .. 이제 나는 완벽하게 해냈다는 것을 이해한다 .... 고마워. .. 이것은 환상적이다. ..... – lawphotog

0

이 시도하지만이 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 

그것이

+0

도움을 주셔서 감사합니다. .. 미안하다. .. 나는 그것을 할 수 없다. .. 나는 그 열을 하드 코드 할 수 없도록 데이터 테이블에 무엇이 있는지를 알 수 없을 것이다. 내가 할 수있는 유일한 것 물론입니다 .. 매핑 테이블에서 첫 번째 열은 첫 번째 테이블의 열이고 두 번째 열은 내가 생성하고자하는 테이블의 열입니다 .. – lawphotog

+0

targettable.columns [0] .caption = "First 이름"; // indexing에 의해 – skhurams