Это должно быть легко, похоже, я слишком запутался.
Я получаю таблицу из базы данных, диапазон значений данных от varchar до int до значений Null. Дешевый и грязный способ преобразования этого в файл с разделителями табуляции, который у меня уже есть, заключается в следующем (уменьшенный для экономии места, уродство сохраняется наравне с оригиналом):
da.Fill(dt)
' da - DataAdapter '
' dt - DataTable '
Dim lColumns As Long = dt.Columns.Count
Dim arrColumns(dt.Columns.Count) As String
Dim arrData(dt.Columns.Count) As Object
Dim j As Long = 0
Dim arrData(dt.Columns.Count) As Object
For i = 0 To dt.Rows.Count - 1
arrData = dt.Rows(i).ItemArray()
For j = 0 To arrData.GetUpperBound(0) - 1
arrColumns(j) = arrData(j).ToString
Next
wrtOutput.WriteLine(String.Join(strFieldDelimiter, arrColumns))
Array.Clear(arrColumns, 0, arrColumns.GetLength(0))
Array.Clear(arrData, 0, arrData.GetLength(0))
Next
Это не только уродливо и неэффективно, но и действует мне на нервы. Кроме того, я хочу, если возможно, избежать позорной двойной петли через стол. Я был бы очень признателен за чистый и безопасный способ переписать эту часть.
Мне нравится подход, который используется здесь - особенно он пытается решить ту же проблему, что и я, но он терпит неудачу, когда я применяю его к своему делу напрямую.