将数据集附加到其他数据集
本文关键字:数据集 其他 | 更新日期: 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指定为DataGrid的DataSource
datagrid.datasource=dataset
datagrid.datamember= "table2"