Ordenar filas de un DataTable en C#
Es posible ordenar filas de un DataTable en C# a partir de una de sus columnas en orden ascendente o descendente mediante DataView.Sort.
La propiedad Sort establece el criterio de ordenación de las filas mediante las columnas. Se especifica a la propiedad Sort mediante una cadena el nombre de la columna seguido de:
- ASC: Ascendente
- DESC: Descendente
Al usar la propiedad sort sin especificar el orden, por defecto las filas se ordenan de forma ascendente.
Para ordenar por varias columnas es necesario separar por coma el nombre de la columna.
Podría interesarte Crear DataTable manualmente en csharp C#
Ordenar filas de DataTable en C#
Tenemos la siguiente tabla con dos columnas para ordenar:
Ascendente
Para realizar esta operación es necesario asignar el nombre de la columna + ASC a la propiedad Sort, como el siguiente código:
DataView dtV = tablaUno.DefaultView;
dtV.Sort = "Mes ASC";
tablaUno = dtV.ToTable();
- Se crea una variable de tipo DataView y se asigna la vista por default del DataTable a ordenar.
- Se llama a la propiedad Sort de la variable DataView y se le asigna el nombre de la columna y el orden.
- Asigno al DataTable inicial la vista de datos ordenado.
Con estas líneas de código obtenemos el siguiente resultado:
Descendente
Para realizar esta operación es necesario asignar el nombre de la columna + DESC a la propiedad Sort, como el siguiente código:
DataView dtV = tablaUno.DefaultView;
dtV.Sort = "Mes DESC";
tablaUno = dtV.ToTable();
Col el cambio de ASC a DESC en el código anterior obtenemos el resultado siguiente:
Podría interesarte Modificar datos de un DataTable en C#
Por múltiple columna
Para realizar esto es necesario agregar el nombre de la columna más el orden separado por coma el nombre de la siguiente columna y el orden.
Nombre DESC, Numero ASC
En el siguiente código podemos ver su funcionamiento:
DataView dtV = tablaUno.DefaultView;
dtV.Sort = "Mes DESC, Dias DESC";
tablaUno = dtV.ToTable();
Aplicando dos ordenamientos obtenemos el resultado siguiente:
En el siguiente video podrás ver la explicación del contenido del post.