将数据集附加到其他数据集

本文关键字:数据集 其他 | 更新日期: 2023-09-27 18:19:27

数据集1

col1 col2
--------

1 nbsp a
2 nbsp b
3 nbsp c

数据集2

col1
----
医生
工程师
程序员

我想在网格视图中这样

col1 col2 col3
------------
1 nbsp a nbsp 医生
2 nbsp b nbsp 工程师
3 nbsp c nbsp 程序员

将数据集附加到其他数据集

在您的情况下,您不需要合并2个DataTables

您可以使用linq。

        var datasource = from r1 in table1.AsEnumerable().Select((r, i) => new { Value = r, Index = i })
                         from r2 in table2.AsEnumerable().Select((r, i) => new { Value = r, Index = i })
                         where r1.Index == r2.Index 
                         select new
                         {
                             col1 = r1.Value["col1"].ToString(),
                             col2 = r1.Value["col2"].ToString(),
                             col3 = r2.Value["col1"].ToString(),
                         };

然后,像绑起来一样。

datagridview.datasource = datasource ;

如果您希望有两个相关的表,在相同的数据集中实现这一点的合适方法

这是linq方法的一种替代方法。

要做到这一点,您必须使用DataRelationhttp://msdn.microsoft.com/es-es/library/system.data.datarelation%28v=vs.110%29.aspx

当然,你必须创建一个ForeignKeyContaint才能使其工作。

这里有一个例子:

 Dim relation As DataRelation
Dim ParentColumn As DataColumn
Dim ChildColumn As DataColumn
Dim foreignkey As ForeignKeyConstraint
ParentColumn = Me.dataset.Tables("table1").Columns(PKTable1)
ChildColumn = Me.dataset.Tables("table2").Columns(FKTable2)
foreignkey = New ForeignKeyConstraint("fkey_table1_table2", ParentColumn, ChildColumn)

                foreignkey.DeleteRule = Rule.Cascade
                foreignkey.UpdateRule = Rule.Cascade                
               foreignkey.AcceptRejectRule = AcceptRejectRule.Cascade

relation = New DataRelation("Relation_table1_table2", ParentColumn, ChildColumn, True)

 table2.Constraints.Add(foreignkey)

 Me.dataset.Relations.Add(relation)

现在您只需将Table2指定为DataGridDataSource

datagrid.datasource=dataset
datagrid.datamember= "table2"