Ordenar DataTable en C#

Muhammad Maisam Abbas 16 febrero 2024
  1. Ordenar DataTable con la propiedad DataView.Sort en C#
  2. Ordenar DataTable con la propiedad DataTable.DefaultView en C#
Ordenar DataTable en C#

Este tutorial presentará los métodos para ordenar una tabla de datos en C#.

Ordenar DataTable con la propiedad DataView.Sort en C#

La propiedad DataView.Sort se utiliza para obtener o establecer la columna de clasificación de una tabla de datos en C#. Podemos establecer la columna de clasificación de nuestra tabla de datos especificando el nombre de la columna como DataView.Sort = "Col_name". De forma predeterminada, este método ordena la tabla de datos en orden ascendente. Podemos especificar desc después del nombre de la columna para ordenar la tabla de datos en orden descendente. Entonces podemos convertir este DataView en un DataTable con la función DataView.ToTable() en C#. El siguiente ejemplo de código nos muestra cómo podemos ordenar una tabla de datos con la propiedad DataView.Sort en C#.

using System;
using System.Data;

namespace datatable_sort {
  class Program {
    static void Main(string[] args) {
      DataTable table1 = new DataTable();
      DataColumn column1 = new DataColumn();
      DataColumn column2 = new DataColumn();
      column1.DataType = System.Type.GetType("System.Decimal");
      column2.DataType = System.Type.GetType("System.Decimal");
      column1.ColumnName = "Price";
      column2.ColumnName = "Rating";
      table1.Columns.Add(column1);
      table1.Columns.Add(column2);
      DataRow row;
      for (int i = 0; i < 3; i++) {
        row = table1.NewRow();
        row["Price"] = i + 1;
        row["Rating"] = i;
        table1.Rows.Add(row);
      }
      // Displaying Original Values
      Console.WriteLine("UnSorted Values");
      foreach (DataRow r in table1.Rows) {
        Console.WriteLine("Price = {0}, Rating = {1}", r[0], r[1]);
      }

      // Sorting the Table
      DataView dv = table1.DefaultView;
      dv.Sort = "Price desc";
      DataTable sortedtable1 = dv.ToTable();

      // Displaying Sorted Values
      Console.WriteLine("Sorted Values by Descending order of Price");
      foreach (DataRow r in sortedtable1.Rows) {
        Console.WriteLine("Price = {0}, Rating = {1}", r[0], r[1]);
      }
    }
  }
}

Producción :

UnSorted Values
Price = 1, Rating = 0
Price = 2, Rating = 1
Price = 3, Rating = 2
Sorted Values by Descending order of Price
Price = 3, Rating = 2
Price = 2, Rating = 1
Price = 1, Rating = 0

En el código anterior, primero creamos una tabla de datos table1 y le agregamos dos columnas Price y Rating. Luego ordenamos la tabla por orden descendente de Precio y mostramos los nuevos valores. Creamos una nueva instancia de la clase DataView y la ordenamos con la propiedad DataView.Sort. Luego convertimos el DataView ordenado en un DataTable con la función DataView.ToTable() en C#. Al final, mostramos los datos en la tabla ordenada.

Ordenar DataTable con la propiedad DataTable.DefaultView en C#

La propiedad DataTable.DefaultView se utiliza para obtener una vista personalizada de una tabla de datos en C#. Podemos ordenar nuestra tabla de datos especificando la columna de clasificación en la propiedad DataTable.DefaultView.Sort. De forma predeterminada, este método ordena la tabla de datos en orden ascendente. Podemos especificar desc después del nombre de la columna para ordenar la tabla de datos en orden descendente. Luego podemos convertir esa vista ordenada en una tabla de datos con la función DefaultView.ToTable() en C#. El siguiente ejemplo de código nos muestra cómo podemos ordenar una tabla de datos con la propiedad DataTable.DefaultView en C#.

using System;
using System.Data;

namespace datatable_sort {
  class Program {
    static void Main(string[] args) {
      DataTable table1 = new DataTable();
      DataColumn column1 = new DataColumn();
      DataColumn column2 = new DataColumn();
      column1.DataType = System.Type.GetType("System.Decimal");
      column2.DataType = System.Type.GetType("System.Decimal");
      column1.ColumnName = "Price";
      column2.ColumnName = "Rating";
      table1.Columns.Add(column1);
      table1.Columns.Add(column2);
      DataRow row;
      for (int i = 0; i < 3; i++) {
        row = table1.NewRow();
        row["Price"] = i + 1;
        row["Rating"] = i;
        table1.Rows.Add(row);
      }
      // Displaying Original Values
      Console.WriteLine("UnSorted Values");
      foreach (DataRow r in table1.Rows) {
        Console.WriteLine("Price = {0}, Rating = {1}", r[0], r[1]);
      }

      // Sorting the Table
      table1.DefaultView.Sort = "Price desc";
      table1 = table1.DefaultView.ToTable(true);

      // Displaying Sorted Values
      Console.WriteLine("Sorted Values by Descending order of Price");
      foreach (DataRow r in table1.Rows) {
        Console.WriteLine("Price = {0}, Rating = {1}", r[0], r[1]);
      }
    }
  }
}

Producción :

UnSorted Values
Price = 1, Rating = 0
Price = 2, Rating = 1
Price = 3, Rating = 2
Sorted Values by Descending order of Price
Price = 3, Rating = 2
Price = 2, Rating = 1
Price = 1, Rating = 0

En el código anterior, primero creamos una tabla de datos table1 y agregamos dos columnas, Price y Rating. Luego ordenamos la tabla table1 por el orden descendente de Price y mostramos los nuevos valores. Creamos una vista ordenada de nuestra tabla table1 con la propiedad table1.DefaultView.Sort. Luego convertimos esa vista ordenada en una tabla con la función table1.DefaultView.ToTable(true) en C#. Al final, mostramos los datos en la tabla ordenada.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Artículo relacionado - Csharp DataTable