如何在VB.NET中添加列中的DATATABLE [英] HOW TO ADD COLUMN IN EXISTING DATATABLE IN VB.NET
本文介绍了如何在VB.NET中添加列中的DATATABLE的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想在现有数据表中添加新列,我正在比较两个数据表并将结果提供给resultdatatable。我想基于两个数据表中的比较结果向resultdatatable添加新列。
这是我制作的代码。我希望并提前感谢您的帮助。
Hi,
I would like to add new column to existing datatable, I''m comparing to two datatable and give the result to resultdatatable. I would like to add new column to resultdatatable based on my comparison result in two datatables.
Here''s the code I made. I hope and thank your in advance for your help.
Public Function getDifferentRecords(FirstDataTable As DataTable, SecondDataTable As DataTable) As DataTable
'Create Empty Table
Dim ResultDataTable As New DataTable("ResultDataTable")
ResultDataTable.Columns.Add("Action", GetType(String))
'use a Dataset to make use of a DataRelation object
Using ds As New DataSet()
'Add tables
ds.Tables.AddRange(New DataTable() {FirstDataTable.Copy(), SecondDataTable.Copy()})
'Get Columns for DataRelation
Dim firstColumns As DataColumn() = New DataColumn(ds.Tables(0).Columns.Count - 1) {}
Dim i As Integer = 0
While i < firstColumns.Length
firstColumns(i) = ds.Tables(0).Columns(i)
System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1)
End While
Dim secondColumns As DataColumn() = New DataColumn(ds.Tables(1).Columns.Count - 1) {}
i = 0
While i < secondColumns.Length
secondColumns(i) = ds.Tables(1).Columns(i)
System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1)
End While
'Create DataRelation
Dim r1 As New DataRelation(String.Empty, firstColumns, secondColumns, False)
ds.Relations.Add(r1)
Dim r2 As New DataRelation(String.Empty, secondColumns, firstColumns, False)
ds.Relations.Add(r2)
'Create columns for return table
i = 0
While i < FirstDataTable.Columns.Count
ResultDataTable.Columns.Add(FirstDataTable.Columns(i).ColumnName, FirstDataTable.Columns(i).DataType)
System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1)
End While
'If FirstDataTable Row not in SecondDataTable, Add to ResultDataTable.
ResultDataTable.BeginLoadData()
For Each parentrow As DataRow In ds.Tables(0).Rows
Dim childrows As DataRow() = parentrow.GetChildRows(r1)
'If childrows Is Nothing OrElse childrows.Length = 0 Then
' ResultDataTable.LoadDataRow(parentrow.ItemArray, True)
'End If
If childrows Is Nothing Then
ResultDataTable.LoadDataRow(parentrow.ItemArray, True)
ElseIf childrows.Length = 0 Then
' ResultDataTable.LoadDataRow(parentrow.ItemArray, True)
Dim id2 = parentrow
For Each _row As DataRow In SecondDataTable.Rows
If (_row(0) = id2(0)) Then
For Each _col As DataColumn In FirstDataTable.Columns
'get specified column
If _row(_col.ColumnName) <> parentrow(_col.ColumnName) Then
'display field value in 2nd table
Dim strColumn = parentrow(_col.ColumnName).ToString()
Dim newRow = ResultDataTable.NewRow()
For Each _newRow In newRow.ItemArray
For Each _colSource As DataColumn In ResultDataTable.Columns
_newRow(_colsource)=
Next
Next
Dim thisRow As DataRow = ResultDataTable.LoadDataRow(a, True)
'thisRow("Action") = "Update"
' ResultDataTable.LoadDataRow(parentrow.ItemArray, True)
End If
Next
End If
Next
End If
Next
'Dim dictTable1ID As New Dictionary(Of Integer, String)
'Dim dictTable2ID As New Dictionary(Of Integer, String)
'For Each tablerow1 As DataRow In ds.Tables(0).Rows
' dictTable1ID.Add(tablerow1(0), tablerow1(1))
'Next
'For Each tablerow2 As DataRow In ds.Tables(1).Rows
' dictTable2ID.Add(tablerow2(0), tablerow2(1))
'Next
'If SecondDataTable Row not in FirstDataTable, Add to ResultDataTable.
For Each parentrow As DataRow In ds.Tables(1).Rows
'parentrow(0)
Dim _found As Boolean = False
For Each _row As DataRow In FirstDataTable.Rows
If parentrow(0) = _row(0) Then
_found = True
End If
Next
If Not _found Then
ResultDataTable.LoadDataRow(parentrow.ItemArray, True)
End If
Next
ResultDataTable.EndLoadData()
End Using
Return ResultDataTable
End Function
推荐答案
阅读:向DataTable添加列 [ ^ ]
您好Jess,
请试试这个
Dim a()As Object = {Update}
a.CopyTo(parentrow.ItemArray,0)
Hi Jess,
Please try this
Dim a() As Object = {"Update"}
a.CopyTo(parentrow.ItemArray,0)
这篇关于如何在VB.NET中添加列中的DATATABLE的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文