2011-09-26 69 views
5

¿Cómo obtener las columnas seleccionadas del DataTable?
Por ejemplo, mi BaseTable tiene tres columnas,
ColumnA,
ColumnB y
ColumnC.

Ahora, como parte de las operaciones intermedias, necesito recuperar todas las filas solo de ColumnA. ¿Hay alguna fórmula predefinida como DataTable.Select?Columnas seleccionadas de DataTable

+0

¿Cuál sería el propósito de tirar solo una columna? Si deja las tres columnas allí, siempre puede tomar solo la primera columna con 'DataTable.Rows [i] [" ColumnA "]' cuando está recorriendo datos en bucle. – mellamokb

+1

Necesito establecer los distintos valores de fila de la columna A en un listBox. – Krishna

+0

Puedo crear un DataView y eliminar las columnas innecesarias de allí. Pero es un procedimiento de dos pasos y se estrangula si el tamaño de la tabla de datos es enorme. – Krishna

Respuesta

8

DataView.ToTable Method.

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

Ahora puede seleccionar.

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

Utilicé el similar que ya publiqué en los comentarios. Funciona bien para mí. Solo estoy buscando otra solución mejor que no afecte el rendimiento. De todos modos, estoy de acuerdo con esto por ahora. Muchas gracias. – Krishna

1

De esta pregunta: How to select distinct rows in a datatable and store into an array puede obtener los valores distintos:

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

Si usted está tratando con un gran DataTable y se preocupan por el rendimiento, sugeriría algo así como lo siguiente en .NET 2.0 . Supongo que el tipo de datos que está mostrando es una cadena, por lo tanto, cambie según sea necesario.

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

El número mínimo de filas será alrededor de 50K y esto debería implementarse para las 26 columnas. Así que foreach, for y while loops están fuera de discusión. – Krishna

+0

De todos modos, la solución anterior funciona para mí. Estoy seguro de que su solución será perfecta para los pequeños objetos de datos. – Krishna

Cuestiones relacionadas