Я предполагаю, что вы лучше использовать generic list вместо массива. Поправьте меня если я ошибаюсь.
Если вы заполнили свой стол в своем коде, вы можете добавить rolw_id путем итерации по всем строкам.
Dim allRoleIDs As New List(Of Int32)
For Each row As DataRow In user_roles.Rows
allRoleIDs.Add(CInt(row("role_id)")))
Next
Учтите, что здесь лучше использовать Datareader из-за соображений удобства.
Когда вы используете сильный типизированный набор данных и хотите избежать дополнительного обратного перехода после заполнения Datatable, чтобы добавить идентификаторы в список, вам необходимо расширить автоматически созданный класс DataAdapter набора данных (f.e., Называемый user_rolesTableAdapter).
Не используйте для этого класс designer.vb Dataset, потому что он будет переопределен при каждом изменении набора данных. Используйте свой класс codebehind (без designer.vb) и добавьте сначала одно и то же пространство имен из вашего автоматически генерируемого TableAdapter (f.e. DatasetNameTableAdapter где DatasetName - это имя вашего набора данных). Затем добавьте следующий класс (заменить правильные команды, колонный индекс, имя класса частичного класса):
Namespace DatasetNameTableAdapters
Partial Public Class user_rolesTableAdapter
Public Function getListOfUserRolesID() As System.Collections.Generic.List(Of System.Int32)
Dim list As New System.Collections.Generic.List(Of System.Int32)
Dim command As System.Data.SqlClient.SqlCommand = Me.CommandCollection(0)
Dim previousConnectionState As System.Data.ConnectionState = command.Connection.State
If ((command.Connection.State And System.Data.ConnectionState.Open) _
<> System.Data.ConnectionState.Open) Then
command.Connection.Open()
End If
Try
Using reader As System.Data.SqlClient.SqlDataReader = command.ExecuteReader
While reader.Read
list.Add(reader.GetInt32(0))
End While
End Using
Finally
If (previousConnectionState = System.Data.ConnectionState.Closed) Then
command.Connection.Close()
End If
End Try
Return list
End Function
End Class
End NameSpace
Теперь вы можете получить user_roles идентификаторов как общий список непосредственно из DataAdapter без перебора дважды (первого на заполнение datatable и second для добавления идентификаторов в список).
Конечно, вы также можете использовать этот подход Datareader в Page.Load без использования набора данных.
Вопрос: Как вы получаете информацию? Вы потянете его в DataSet или вы потянете его в DataReader? – XstreamINsanity
Дорогой, можно ли привести пример, как это сделать с помощью DataReader. Я не пробовал это, но у меня есть требование на то же самое. –