Как избежать использования двух вложенных циклов for для двух связанных таблиц данных - PullRequest
1 голос
/ 04 июля 2019

Попытка избежать использования двух вложенных циклов for в приведенном ниже коде, но я не могу придумать, как объединить обе DataTables, не используя два цикла for.Обратите внимание, что обе DataTables являются динамическими, поэтому я не смог решить проблему на уровне SQL Query.

Приведенный ниже DataTable получает все разделы из базы данных.Их количество ограничено, но они динамичны.

Dim dtSections As DataTable = HomeSections()

Цикл по разделам и получение всех связанных элементов для каждого раздела:

If dtSections.Rows.Count > 0 Then   
    For Each mySectionRow As DataRow In dtSections.Rows 
        Dim dtItems As DataTable = getItemsBySection(sectionId)
        If dtItems.Rows.Count > 0 Then
           For Each myItemRow As DataRow In dtItems.Rows
               'Some HTML population
           Next 
        End if
   Next 
End if

Мне было интересно, что может быть лучшим способом избежатьиспользование вложенных циклов for, когда значения второго DataTable зависят от значений первого DataTable.Я думал об использовании DataSet, но не думаю, что смогу сгенерировать второй DataTable на основе результатов первого.

Если эта проблема будет решена на уровне кода или на уровне SQL(Хранимая процедура, например)?

1 Ответ

0 голосов
/ 04 июля 2019

Вы можете объединить две таблицы данных, используя LINQ

Dim query = From mySectionRow  In dtSections
                    Join myItemRow  In dtItems
                    On mySectionRow!sectionId Equals myItemRow!sectionId
                    Select mySectionRow!sectionId, myItemRow!sectionId

For Each q In query
    'Some HTML population
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...