我有一个DataSet
与两个DataTable
s的关系。
这个Dataset
是我的网格中的DataSource
。
在我的应用程序的其他网站,我使用这个DataSource
作为DataTable
。这种关系允许我使用ChildRelations
。
我需要一个列表中的所有DataRow
s。
第一部分是(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)
。
a.ChildTable
是一个DataTable
。
a.ChildTable.Select()
是对Select()
method的DataTable
的召唤,它返回了一系列DataRow
。
因此产生的类型是IEnumerable(Of an array of DataRow)
。
如果要将所有子表的所有行展平为单个集合,请使用SelectMany
:
Dim obj = DTprincipal.ChildRelations.Cast(Of DataRelation).SelectMany(Function(r) r.ChildTable.Select())