DataTable для ArrayList - PullRequest
       20

DataTable для ArrayList

1 голос
/ 06 января 2012

Я хочу получить значение из datatable и затем сохранить его в массиве string (). дата может содержать 3 столбца (columnA | columnB | columnC). Я хочу получить все значения из columnB и сохранить их в arraylist.

Я должен попробовать что-то вроде этого

If myTableData.Rows.Count > 0 Then
    For i As Integer = 0 To myTableData.Rows.Count - 1
        Dim value() As String = myTableData.Rows(i)(1)
    Next
End If

но когда я скомпилировал этот код, я получил сообщение об ошибке, подобное этому:

Невозможно привести объект типа 'System.String' к типу 'System.String []'

пожалуйста, помогите мне .....

Ответы [ 3 ]

5 голосов
/ 06 января 2012

Вы можете сделать это с помощью LINQ:

Dim colBValues = (From row In myTableData Select colB = row(1).ToString).ToList

Или, если вы предпочитаете способ "старой школы":

Dim colBValues = New List(Of String)
For Each row As DataRow In myTableData.Rows
    colBValues.Add(row(1).ToString)
Next

Я использовал List(Of String), потому что этобезопасный для типов, поэтому вам не нужно приводить значения каждый раз.Это делает код более читабельным, более отказоустойчивым и более быстрым.

Если вам нужен String-Array, вы можете просто использовать ToArray :

Dim colBValues = (From row In myTableData Select colB = row(1).ToString).ToArray
2 голосов
/ 06 января 2012
Dim a() As String
Dim total As Integer

'Count the number of rows
    total = myTableData.Rows.Count - 1

ReDim a(0 To total)
    For i = 0 To total
        a(i) = myTableData.Rows(i)(1)
    Next
1 голос
/ 18 марта 2018

Это действительно старый вопрос, но я предоставлю еще один вариант ответа:

Dim value = myTableData.Rows.OfType(Of DataRow).Select(Function(x) x(1).ToString()).ToArray

Так что, если у вас более одного column в вашем DataTable, вы можете использовать x(columnIndex) вместо 1.

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