如何以2种不同的方式合并2个DataView?

时间:2017-05-18 17:28:43

标签: vb.net list dataview

我不是一个c#开发人员,我发现自己正在使用一个巨大的C#应用​​程序......拥抱..

现在,我正在尝试使用已经创建的更多数据来填充现有的DataGrid'以不同的方式...让我告诉你我的意思。

这是现有DataView的生成方式:

Dim lDataSet As System.Data.DataSet
Dim lSqlCommand As New System.Data.SqlClient.SqlCommand
Dim lConvert As New PeoplePlanner.Common.Data.Convert

lSqlCommand.CommandType = CommandType.StoredProcedure
lsqlCommand.CommandText = "AccessIntegrationEmployeeInboundSearch"

lDataSet = objDatabase.GetDataSet(lSqlCommand)

If Not IsNothing(lDataSet) Then
    objDataView = lDataSet.Tables(0).DefaultView
End If

该代码中可能缺少某些内容,但希望它足以获得概述。它使用存储过程(SP)从数据库中获取一些数据,并将结果返回到“数据集”中。然后我们做了objDataView = lDataSet.Tables(0).DefaultView'。

现在我想要合并的新数据'它有相同的字段,但它不是SP的响应,而是我创建的一个操作,它返回一个OnBoardingEmployee列表(让我们这样调用它),如果我想正确显示里面的数据这个列表就是我做的:

 Dim lDataView As System.Data.DataView

 Dim op = CoreInjector.Inject(Of IGetAllDataHubIncomingMessagesToBeProcess).Execute()
 lDataView = Common.Detail.DataGridOperationHelper.ConvertToDataTable(op.OnBoardingEmployee).DefaultView

 objDataView = lDataView

其中:

  • op包含OnBoardingEmployee列表,其中包含与现有表相同的字段
  • lDataView基本上与objDataView相同,这就是为什么我最后一步分配了objDataView = lDataView

现在我基本上想要合并,加入,添加等等 为第一个表创建的objDataView:      objDataView = lDataSet.Tables(0).DefaultView

我之后创建的那个:

 lDataView = Common.Detail.DataGridOperationHelper.ConvertToDataTable(x.OnBoardingEmployee).DefaultView

我该怎么做? :'(

它们具有相同的数据结构或更好地说它们使用相同的视图。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

我已经开始工作了:)这是我的实现:

        Dim employeeJSONTable As DataTable
        Dim employeeExistingTable As DataTable
        Dim myDataRow As DataRow
        Dim employeeID As Integer

        if Request.QueryString.Get("Function") = "HubInbound" then
            Dim employeeJSONList = CoreInjector.Inject(Of IGetAllDataHubIncomingMessagesToBeProcess).Execute()
            employeeJSONTable = Common.Detail.DataGridOperationHelper.ConvertToDataTable(employeeJSONList.OnBoardingEmployee)
            employeeJSONTable.PrimaryKey = New DataColumn(){ employeeJSONTable.Columns("EmployeeID")}
        End If

        lDataSet = objDatabase.GetDataSet(lSqlCommand)
        employeeExistingTable = lDataSet.Tables(0)

        For Each row As DataRow In employeeExistingTable.Rows

            employeeID = row.Item("EmployeeID")

            myDataRow = employeeJSONTable.Rows.Find(employeeID)

            if (myDataRow Is Nothing) then
                employeeJSONTable.ImportRow(row)
            End If

        Next row

        If Not IsNothing(employeeJSONTable.DefaultView) And Request.QueryString.Get("Function") = "HubInbound" Then
                objDataView = employeeJSONTable.DefaultView
        Elseif Not IsNothing(lDataSet) Then
                objDataView = lDataSet.Tables(0).DefaultView
        End if