【问题标题】:Merging the table from 3 dataset to 1将表从 3 个数据集合并到 1 个
【发布时间】:2011-10-25 03:36:33
【问题描述】:

我正在从数据库中加载三个数据集

Dataset 1 > Table 1 > 10 rows
Dataset 2 > Table 1 > 3 rows
Dataset 3 > Table 1 > 5 rows

(所有数据集具有相同的列名,相同的数据类型)实际上它们包含基于不同选择条件的数据) 现在我想像这样将所有三个数据集合并为一个

数据集 4 > 表 1 > 18 行

请帮助我该怎么做

【问题讨论】:

    标签: asp.net dataset asp.net-4.0


    【解决方案1】:

    试试DataSet.Merge Method (DataSet) 方法。像这样的东西(未测试):

    C#:

    dataset1.Merge(dataset2);
    
    DataSet dataset4 = dataset1.Merge(dataset3);
    

    VB.NET:

    dataset1.Merge(dataset2)
    
    Dim dataset4 As New DataSet = dataset1.Merge(dataset3)    
    

    【讨论】:

      【解决方案2】:

      如果您希望合并两个数据集和所有包含的表,您可以使用 Tim 的建议,或者您可以对特定表执行类似的操作。

      DataTable table1 = new DataTable();
      DataTable table2 = new DataTable();
      DataTable table3 = new DataTable();
      
      table1.Merge(table2);
      table1.Merge(table3);
      

      【讨论】:

        【解决方案3】:

        一种(灵活的)方式是使用Enumerable.Union

        在 VB.NET 中:

        Dim tblMerged = tbl1.AsEnumerable _
                            .Union(tbl2.AsEnumerable) _
                            .Union(tbl3.AsEnumerable) _
                            .CopyToDataTable()
        

        测试:

        Dim tbl1 As New DataTable
        Dim tbl2 As New DataTable
        Dim tbl3 As New DataTable
        Dim col1_1 As New DataColumn("Col1", GetType(String))
        Dim col2_1 As New DataColumn("Col1", GetType(String))
        Dim col3_1 As New DataColumn("Col1", GetType(String))
        
        tbl1.Columns.Add(col1_1)
        tbl2.Columns.Add(col2_1)
        tbl3.Columns.Add(col3_1)
        For i As Int32 = 1 To 10
            Dim row = tbl1.NewRow
            row(0) = "Tbl1_Value" & i
            tbl1.Rows.Add(row)
        Next
        For i As Int32 = 1 To 20
            Dim row = tbl2.NewRow
            row(0) = "Tbl2_Value" & i
            tbl2.Rows.Add(row)
        Next
        For i As Int32 = 1 To 50
            Dim row = tbl3.NewRow
            row(0) = "Tbl3_Value" & i
            tbl3.Rows.Add(row)
        Next
        
        Dim tblMerged = tbl1.AsEnumerable.Union(tbl2.AsEnumerable).Union(tbl3.AsEnumerable).CopyToDataTable
        

        【讨论】:

        • 为什么要使用这个而不是DataTable.Merge
        • 在我看来 LINQ 更灵活,所以如果您需要添加其他条件 Merge 可能不再是一个选项,您必须放弃这种方法。这两种方法都可以满足 OP 的要求。
        • 很抱歉。我错过了底线的Unions。这是一个很好的方法。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-11
        • 2016-04-18
        • 2019-05-19
        • 2012-04-13
        • 1970-01-01
        • 2012-07-12
        相关资源
        最近更新 更多