Преобразовать IEnumerable (Of DataRow ()) в список (Of Datarow) - PullRequest
0 голосов
/ 28 марта 2019

У меня есть DataSet с отношениями для двух DataTable с.
Это Dataset мой DataSource в сетке.
На другом сайте моего приложения я использую DataSource как DataTable. Отношение позволяет мне использовать ChildRelations.

Мне нужны все DataRow в одном списке.

Первая часть (DTpadre и DThijo DataTable с):

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 <strong>DataRow()</strong>) ... я хочу IEnumerable(Of <strong>Datarow</strong>).

1 Ответ

0 голосов
/ 28 марта 2019

a.ChildTable - это DataTable.
a.ChildTable.Select() - это вызов Select() метода из DataTable, который возвращает массив DataRow.
Следовательно, результирующий тип будет иметь вид IEnumerable(Of <em>an array of DataRow</em>).

Если вы хотите свести все строки всех дочерних таблиц в одну коллекцию, используйте SelectMany:

Dim obj = DTprincipal.ChildRelations.Cast(Of DataRelation).SelectMany(Function(r) r.ChildTable.Select())
...