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:

Ordenar filas de un DataTable en C#

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:

Ordenar filas de un DataTable 1

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:

Ordenamiento Descendente

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:

Ordenamiento en columna multiple

En el siguiente video podrás ver la explicación del contenido del post.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *