2013-12-16 5 views
0

у меня есть этот код до сих пор:Заполнение массива из DataTable

Dim arrayOfResults As UInteger() 
Dim dt As DataTable 
Dim r As DataRow 

For i = 0 To dt.Rows.Count - 1 


Next 

Я не знаю, что положить внутрь для цикла, мне нужно, чтобы получить доступ к первой колонке DataTable для каждой строки и сохраните это в массиве. Так будет что-то вроде этого?

for loop 

    arrayOfResults.? = dt.Rows(i)("Mat") 
next 
+2

Не мог бы вы объяснить, почему вы должны передать значения из DataTable в массиве. Datatable - это своего рода прославленный массив. – Steve

+0

Прошу прощения, мне нужно было передать их, потому что у меня есть оператор sql, который заполняет datatable, тогда мне нужно сохранить каждое значение в определенном столбце в массив и передать массив в unit test – bbesase

ответ

3
Dim dt As DataTable = '... 
Dim arrayOfResults As UInteger(dt.Rows.Count - 1) 

For i = 0 To dt.Rows.Count - 1 
    arrayOfResults(i) = CUInt(dt.Rows(i)("Mat")) 
Next 

Или:

Dim dt As DataTable = '... 
Dim arrayOfResults() As UInteger = dt.AsEnumerable().Select(Function(r) CUInt(r("Mat"))).ToArray() 

Или:

Dim dt As DataTable = '... 
Dim results As New List(Of UInteger)(dt.Rows.Count) 
For Each row As IDataRecord In dt 
    results.Add(CUInt(row("Mat"))) 
Next row 
1

Есть существенно лучшие способы сделать это (особенно LINQ), но держать его ближе всего к тому, что вы я бы либо использовал общий список, а не массив (Like This):

Dim ArrayOfResults as New List(Of UInteger) 

.... 

For i = 0 to dt.Rows.Count - 1 
    ArrayOfResults.Add(dt.Rows(i)("Mat") 
Next 

Или вы должны ReDim массив после вы знаете, сколько строк у вас есть в вашем DataTable и тогда вы могли бы сделать somethign как:

For i = 0 to dt.Rows.Count - 1 
    ArrayOfResult(i) = dt.Rows(i)("Mat") 
Next 

Но, как я уже сказал, массив будет иметь должным образом размеры первого

Надеется, что это помогает, по крайней мере немного ...

+0

Элементы в строке представляют собой объекты типа, которые они должны отбрасывать первым, чтобы добавить их в другие коллекции определенных типов. – tinstaafl

Смежные вопросы