2010-01-16 10 views
7

Procedura consigliata durante la conversione dei valori DataColumn in una matrice di stringhe?Procedura consigliata durante la conversione dei valori DataColumn in una matrice di stringhe?

[Modifica] Tutti i valori per determinati DataColumn per tutte le righe DataTable da convertire in un array di stringhe?

+2

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

+0

Valori di DataColumn da convertire in una matrice di stringhe, ma sto cercando il migliore metodo per l'attuazione di questo. – Ahmed

risposta

17

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

DataRow.ItemArray Proprietà -

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

Inoltre, quale versione stai usando? Si dovrebbe verificare la classe DataTableExtensions -

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

E la classe DataRowExtensions -

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

+0

'DataRow.ItemArray' restituisce tutti i valori in una riga come una matrice. Penso che l'OP desideri tutti i valori in una colonna come una matrice. Forse puoi espandere la tua risposta per aiutare a spiegare come 'DataRow.ItemArray' e la classe' DataTableExtensions' possono aiutarti? – Ben

0

So che questa domanda è vecchio, ma ho trovato nella mia ricerca di Google cercando di fare qualcosa di simile. Volevo creare una lista da tutti i valori contenuti in una specifica riga del mio datatable. Nel mio esempio di codice riportato di seguito, ho aggiunto un'origine dati SQL al mio progetto in Visual Studio utilizzando le procedure guidate della GUI e ho abbandonato la scheda del tavolo necessaria nella finestra di progettazione.

'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) 
Problemi correlati