2013-12-12 34 views
0

我有兩個數據表,我加入他們選擇一些匹配的記錄,我需要一些列來自tatatable作爲我做這樣的連接兩個數據表使用LINQ和獲取導致其它的數據表

一個新的結果集
 Dim query4 = From x In dtblPolicyFormStopCodes.AsEnumerable() Join y In dtblPolicyFormLetterReq.AsEnumerable() 
     On x.Field(Of String)("Code") Equals y.Field(Of String)("Code") _ 
     Select New With _ 
     { _ 
      .Code = x.Field(Of String)("Code"), _ 
      .Sequence = x.Field(Of Integer)("Sequence "), _ 
      .FieldDataType= x.Field(Of String)("FieldDataType"), _ 
      .FieldValue= y.Field(Of String)("FieldValue") _ 
     } 

     MyNewDataTable = GetDynamicTableSchema() 

     query4.Cast(Of DataRow).CopyToDataTable(MyNewDataTable, LoadOption.OverwriteChanges) 

,但我無法得到新的DataTable與兩個數據表中選擇的列,請幫助我,我怎樣才能得到新的結果在我的「MyNewDataTable」或一個新的DataTable

Public Function GetDynamicTableSchema() As System.Data.DataTable 
    Dim tblDynamicTableDataMain As System.Data.DataTable = Nothing 
    Try 
     tblDynamicTableDataMain = New System.Data.DataTable("DynamicTableData") 
     With tblDynamicTableDataMain 
      .Columns.Add("Code") 
      .Columns.Add("Sequence", System.Type.GetType("System.Int32")) 
      .Columns.Add("FieldDataType") 
      .Columns.Add("FieldValue") 
     End With 
     Return tblDynamicTableDataMain 
    End Try 
End Function 

回答

1

我實現了我的願望設置通過使用這種方式的功能

Dim dr As DataRow 
Dim MyNewDataTable as Datatable = GetDynamicTableSchema() 

Dim query = (From x In dtblPolicyFormStopCodes.AsEnumerable() Join y In dtblPolicyFormLetterReq.AsEnumerable() 
      On x.Field(Of String)("Code") Equals y.Field(Of String)("Code")) _ 
      .Select(Function(a) As DataRow 
         dr = MyNewDataTable.NewRow() 
         dr("Code") = a.x.Field(Of String)("Code") 
         dr("Sequence") = a.x.Field(Of Integer)("Sequence") 
         dr("FieldDataType") = a.x.Field(Of String)("FieldDataType") 
         dr("FieldValue") = a.y.Field(Of String)("Fieldvalue") 
         Return dr 
        End Function) 

MyNewDataTable = query.CopyToDataTable()