Лучшая практика при преобразовании значений DataColumn в массив строк?

Лучшая практика при преобразовании значений DataColumn в массив строк?

[Редактировать] Все значения для определенного DataColumn для всех строк DataTable, которые будут преобразованы в массив строк?

3 ответа

Решение

Если я понял вашу цель, вы хотите указать конкретный столбец и вернуть все его значения в виде строкового массива.

Попробуйте эти подходы:

int columnIndex = 2; // desired column index

// for loop approach        
string[] results = new string[dt.Rows.Count];
for (int index = 0; index < dt.Rows.Count; index++)
{
    results[index] = dt.Rows[index][columnIndex].ToString();
}

// LINQ
var result = dt.Rows.Cast<DataRow>()
                    .Select(row => row[columnIndex].ToString())
                    .ToArray();

Вы могли бы заменить columnIndex с columnName вместо этого, например:

string columnName = "OrderId";"

РЕДАКТИРОВАТЬ: вы просили конкретный массив строк, но в случае гибкости в отношении требований, я бы предпочел List<string> чтобы избежать необходимости определять длину массива перед циклом for в первом примере и просто добавлять в него элементы. Это также хорошая возможность использовать цикл foreach.

Я бы тогда переписал код следующим образом:

List<string> list = new List<string>();
foreach (DataRow row in dt.Rows)
{
    list.Add(row[columnIndex].ToString());
}

Свойство DataRow.ItemArray -

http://msdn.microsoft.com/en-us/library/system.data.datarow.itemarray.aspx

Кроме того, какую версию вы используете? Вы должны проверить класс DataTableExtensions -

http://msdn.microsoft.com/en-us/library/system.data.datatableextensions.aspx

И класс DataRowExtensions -

http://msdn.microsoft.com/en-us/library/system.data.datarowextensions.aspx

Я знаю, что этот вопрос старый, но я нашел его в своем поиске в Google, пытаясь сделать что-то подобное. Я хотел создать список из всех значений, содержащихся в определенной строке моей таблицы данных. В приведенном ниже примере кода я добавил источник данных SQL в свой проект в Visual Studio с помощью мастеров графического интерфейса и уронил нужный адаптер таблицы в конструктор.

'Create a private DataTable
Private authTable As New qmgmtDataSet.AuthoritiesDataTable

'Fill the private table using the table adapter 
Me.AuthoritiesTableAdapter1.Fill(Me.authTable)

'Make the list of values
Dim authNames As List(Of String) = New List(Of String)(From value As qmgmtDataSet.AuthoritiesRow In Me.authTable.Rows Select names.authName)
Другие вопросы по тегам