Многомерное присвоение массива из набора данных - PullRequest
0 голосов
/ 15 июня 2011

Я пытаюсь что-то сделать в соответствии с приведенным ниже кодом. Хотя это работает в одномерном массиве. Как заставить работать с 2-м массивом?

Dim arrayord(,) As String = {ds.Tables(0).Rows(3).ItemArray, ds.Tables(0).Rows(23).ItemArray}

Но выдает следующую ошибку.

Ошибка 8 Значение типа «1-мерный массив 1-мерного массива объекта» нельзя преобразовать в «2-мерный массив строки», поскольку «1-мерный массив объекта» не получен из Строка».

1 Ответ

0 голосов
/ 15 июня 2011
Dim dtb1 As New DataTable("Table1")
dtb1.Columns.Add(New DataColumn("Column1", GetType(Integer)))
dtb1.Columns.Add(New DataColumn("Column2", GetType(Integer)))
dtb1.Columns.Add(New DataColumn("Column3", GetType(Single)))
dtb1.Columns.Add(New DataColumn("Column4", GetType(String)))
dtb1.Columns.Add(New DataColumn("Column5", GetType(String)))
dtb1.Rows.Add(1, 1, 1.1, "1", "5")
dtb1.Rows.Add(2, 2, 2.2, "2", "4")
dtb1.Rows.Add(3, 3, 3.3, "3", "3")
dtb1.Rows.Add(4, 4, 4.4, "4", "2")
dtb1.Rows.Add(5, 5, 5.5, "5", "1")
dtb1.Rows.Add(11, 11, 11, "11", "11")

Dim strOutput(dtb1.Rows.Count - 1, dtb1.Columns.Count - 1) As String '(row,col)
For intRow As Integer = 0 To dtb1.Rows.Count - 1
  For intCol As Integer = 0 To dtb1.Columns.Count - 1
    strOutput(intRow, intCol) = CStr(dtb1.Rows(intRow).Item(intCol))
  Next intCol
Next intRow

Или вы можете использовать List (Of String ()) вместо двумерного массива:

Dim lstOutput As New List(Of Object()) From {dtb1.Rows(0).ItemArray, dtb1.Rows(1).ItemArray, dtb1.Rows(2).ItemArray}
...