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 determinate DataColumn per tutte le righe DataTable da convertire in un array di stringhe?

Se ho capito il tuo objective, vuoi specificare una particolare colonna e restituire tutti i suoi valori come una matrice di stringhe.

Prova questi approcci:

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() .Select(row => row[columnIndex].ToString()) .ToArray(); 

Puoi invece sostituire columnIndex con columnName , ad esempio:

 string columnName = "OrderId";" 

EDIT: hai richiesto uno specifico array di stringhe, ma nel caso tu fossi flessibile riguardo ai requisiti preferirei una List per evitare la necessità di determinare la lunghezza dell’array prima del ciclo for nel primo esempio e aggiungere semplicemente oggetti ad esso. È anche una buona occasione per usare un ciclo foreach.

Vorrei quindi riscrivere il codice come segue:

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

Proprietà DataRow.ItemArray –

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

Inoltre, quale versione stai usando? Dovresti controllare la class DataTableExtensions –

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

E la class DataRowExtensions –

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

So che questa domanda è vecchia, ma l’ho trovata nella mia ricerca su 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)