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

时间:2012-01-04 07:21:07

标签: c# asp.net .net

dataSet1的

col1 col2
---- ----

1一个
图2b
图3c

Dataset2

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

我想在网格视图中这样做

col1 col2 col3
---- ---- ----
1医生
2 B工程师
3 C程序员

2 个答案:

答案 0 :(得分:1)

在您的情况下,您无需合并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 ;

答案 1 :(得分:0)

如果您想要有两个相关的表,那么在相同的数据集中实现此目的的方法就是合适的。

这是linq方法的替代方案。

为此,您必须使用DataRelation  http://msdn.microsoft.com/es-es/library/system.data.datarelation%28v=vs.110%29.aspx

当然,您必须创建一个ForeignKeyContraint才能使其正常工作。

以下是一个例子:

 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 指定为 DataGrid

数据源
datagrid.datasource=dataset
datagrid.datamember= "table2"