Как мне зациклить несколько списков в одном объекте в vb.net - PullRequest
0 голосов
/ 04 мая 2018

У меня есть набор данных, в котором хранятся данные, извлеченные из БД.

Мой набор данных выглядит следующим образом:

Id     EmpId     Questions
 1        6       abcdefgh
 2        6       kjkjlkjj
 3        6       yiuyuiyi
 4        6       kljkljkl

Я должен пройти через набор данных и присвоить значения моему классу, который выглядит следующим образом

   Public class MyClass
      Public Property Id As Integer = 0
      Public Property EmpId As Integer = 0
      Public Property Question As List(of String)
   End Class

Как выполнить цикл по набору данных, создать один объект и извлечь несколько вопросов в свойство «Вопрос» в виде списка (назначить объекту MyClass).

Любая помощь? Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Во-первых, вы не можете хранить что-либо в dataset, а не DataTable, в пределах DataTable есть данные. Итак, чтобы упростить вопрос, он должен быть скорее

Как перебрать DataTable внутри DataSet?

Ответ очень прост.

Во-первых, возьмите DataTable

Dim Dt as DataTable = dataset.Table("table name")

Теперь перебираем таблицу данных

For Each Row in Dt
 Dim value1 as String = Row(0) ' Here 0 is the column index,change it as required
Next

Теперь вернемся ко второй части вашего вопроса:

присвоить значения моему классу ...

Ну, во-первых, вам нужно создать List класса MyClass.

Dim myClassList as New Lsit(Of MyClass)

Теперь внутри цикла вы можете сделать:

For Each Row in Dt
 Dim Class1 as New MyClass
 class1.Id= Convert.ToInt32(Row(0)) ' Here 0 is the column index,change it as required
 '''assign other values as well(if required)
 myClassList.Add(Class1)
Next

Надеюсь, это поможет:)

0 голосов
/ 04 мая 2018

Вот простой пример:

Public Function ReturnQuestions() As List(Of MyClass)
    Dim questions As New List(Of MyClass)()
    Using ds As DataSet = GetData("select Id, EmpId, Questions from table")
        //check if populated
        If (ds IsNot Nothing) AndAlso (ds.Tables.Count > 0) AndAlso (ds.Tables(0).Rows.Count > 0)
            For Each row As DataRow In ds.Tables(0).Rows
                questions.Add(New MyClass(ds(0), ds(1), ds(2)))
            Next
        End If
    End using
    Return questions
End Function

Для каждого цикла над вашим dataset.tables.rows (сначала проверяется, если не ничего)

Затем внутри цикла создайте myList.Add (новый MyClass (ds (0), ds (1), ..))

В конце у вас будет список, проанализированный из вашей DS. Есть несколько способов создать внутреннюю часть цикла for, если у вас возникнут вопросы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...