将IEnumerable(DataRow())转换为List(Of Datarow)

时间:2019-03-28 20:22:54

标签: vb.net linq ienumerable

我有一个与两个DataSet有关系的DataTable
Dataset是我在网格中的DataSource
在我应用程序的其他站点中,我将此DataSource用作DataTable。该关系允许我使用ChildRelations

我需要一个列表中的所有DataRow

第一部分是(DTpadreDThijoDataTable 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())

但是objIEnumerable(Of DataRow()) ...我想要IEnumerable(Of Datarow)

1 个答案:

答案 0 :(得分:0)

a.ChildTableDataTable
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())