我有一个与两个DataSet
有关系的DataTable
。
Dataset
是我在网格中的DataSource
。
在我应用程序的其他站点中,我将此DataSource
用作DataTable
。该关系允许我使用ChildRelations
。
我需要一个列表中的所有DataRow
。
第一部分是(DTpadre
和DThijo
是DataTable
s):
DS = New DataSet()
DS.Tables.Add(DTpadre.Copy)
DS.Tables.Add(DThijo.Copy)
DS.Relations.Add("PERMISOS", DS.Tables(0).Columns("CORR"), DS.Tables(1).Columns("CORR_PADRE"), False)
gridDetallePerfiles.DataSource = DS.Tables(0)
我尝试过的是:
DTprincipal = DirectCast(gridDetallePerfiles.DataSource, DataTable)
Dim obj = (From a As DataRelation In DTprincipal.ChildRelations() Select a.ChildTable.Select())
但是obj
是IEnumerable(Of DataRow())
...我想要IEnumerable(Of Datarow)
。
答案 0 :(得分:0)
a.ChildTable
是DataTable
。
a.ChildTable.Select()
是对DataTable
的{{3}}的调用,它返回DataRow
的数组。
因此,结果类型为IEnumerable(Of an array of DataRow)
。
如果要将所有子表的所有行展平为一个集合,请使用SelectMany
:
Dim obj = DTprincipal.ChildRelations.Cast(Of DataRelation).SelectMany(Function(r) r.ChildTable.Select())