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

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

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

12
задан Ahmed 16 January 2010 в 14:58
поделиться

2 ответа

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

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

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();

Вы можете заменить COLLINDINDEX с с , например, вместо этого, например:

string columnName = "OrderId";"

Редактировать: Вы попросили строковый массив В частности, но в случае, если вы гибковы относитесь к требованиям, я бы предпочел список list , чтобы избежать необходимости определять длину массива перед циклом в первом примере и просто добавлять к нему элементы. Также есть хорошая возможность использовать петлю Foreach вместо этого.

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

List<string> list = new List<string>();
foreach (DataRow row in dt.Rows)
{
    list.Add(row[columnIndex].ToString());
}
23
ответ дан 2 December 2019 в 05:54
поделиться

DataRow.ItemArray Property -

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

2
ответ дан 2 December 2019 в 05:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: