Se ho capito il tuo obiettivo si desidera specificare una colonna particolare e restituire tutti i suoi valori come array di stringhe.
Prova questi approcci out:
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();
È possibile sostituire columnIndex
con columnName
invece, ad esempio:
string columnName = "OrderId";"
EDIT: che hai chiesto un array di stringhe in particolare, ma nel caso in cui sei flessibile riguardo ai requisiti Io preferirei uno List<string>
per evitare la necessità di determinare la lunghezza dell'array prima del ciclo for nel primo esempio e aggiungerlo semplicemente ms ad esso. È anche una buona occasione per usare un ciclo foreach.
Vorrei poi riscrivere il codice come segue:
List<string> list = new List<string>();
foreach (DataRow row in dt.Rows)
{
list.Add(row[columnIndex].ToString());
}
fonte
2010-01-16 15:26:32
Potete specificare? Qualsiasi Datarow ha la proprietà ItemArray che ti restituisce un array di oggetti nella stessa sequenza delle colonne definite per esso. La conversione degli oggetti in stringhe sarebbe facile come chiamare ToString() su ciascun valore, ma forse è un'altra cosa che vuoi ... – flq
Valori di DataColumn da convertire in una matrice di stringhe, ma sto cercando il migliore metodo per l'attuazione di questo. – Ahmed