Если я понял вашу цель, вы хотите указать конкретный столбец и вернуть все его значения в виде строкового массива.
Попробуйте эти подходы:
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>
, чтобы избежать необходимости определять длину массива до цикл в первом примере и просто добавьте элементы к нему. Это также хорошая возможность использовать цикл foreach.
Я бы тогда переписал код следующим образом:
List<string> list = new List<string>();
foreach (DataRow row in dt.Rows)
{
list.Add(row[columnIndex].ToString());
}