2011-09-26 24 views
5

Come ottenere le colonne selezionate dal DataTable?
Ad esempio il mio BaseTable ha tre colonne,
ColumnA,
ColumnB e
ColumnC.

Ora come parte delle operazioni intermedie, ho bisogno di recuperare tutte le righe solo dalla ColonnaA. Esiste una formula predefinita come DataTable.Select?Colonne selezionate da DataTable

+0

Quale sarebbe lo scopo di tirare solo una colonna? Se lasci tutte e tre le colonne, puoi sempre prendere solo la prima colonna con 'DataTable.Rows [i] [" ColumnA "]' quando esegui il looping dei dati. – mellamokb

+1

Ho bisogno di impostare i distinti valori di riga di Column-A in un listBox. – Krishna

+0

Posso creare un DataView ed eliminare le colonne non necessarie da lì. Ma è una procedura in due fasi e soffoca se la dimensione datatable è enorme. – Krishna

risposta

8

DataView.ToTable Method.

DataView view = new DataView(MyDataTable); 
DataTable distinctValues = view.ToTable(true, "ColumnA"); 

Ora è possibile selezionare.

DataRow[] myRows = distinctValues.Select(); 
+0

Ho usato quello simile che ho già postato nei commenti. Funziona bene per me. Sto cercando qualsiasi altra soluzione migliore che non influenzi le prestazioni. Ad ogni modo sto bene con questo per ora. Molte grazie. – Krishna

1

Da questa domanda: How to select distinct rows in a datatable and store into an array è possibile ottenere i valori distinti:

DataView view = new DataView(table); 
DataTable distinctValues = view.ToTable(true, "ColumnA"); 

Se hai a che fare con una grande DataTable e cura circa le prestazioni, vorrei suggerire qualcosa di simile a quanto segue in .NET 2.0 . Suppongo che il tipo di dati che stai visualizzando sia una stringa, quindi per favore cambia se necessario.

Dictionary<string,string> colA = new Dictionary<string,string>(); 
foreach (DataRow row in table.Rows) { 
    colA[(string)row["ColumnA"]] = ""; 
} 
return colA.Keys; 
+0

Il numero minimo di righe sarà di circa 50K e dovrebbe essere implementato per tutte le 26 colonne. Quindi foreach, for e while loops sono fuori questione. – Krishna

+0

Ad ogni modo, la soluzione di cui sopra funziona per me. Sono sicuro che la tua soluzione sarà perfetta per i piccoli oggetti di dati. – Krishna

Problemi correlati