Classificar DataTable em C#

Muhammad Maisam Abbas 12 outubro 2023
  1. Classifique DataTable com a propriedade DataView.Sort em C#
  2. Classifique DataTable com a propriedade DataTable.DefaultView em C#
Classificar DataTable em C#

Este tutorial irá apresentar os métodos para classificar uma tabela de dados em C#.

Classifique DataTable com a propriedade DataView.Sort em C#

A propriedade DataView.Sort é usada para obter ou definir a coluna de classificação de uma tabela de dados em C#. Podemos definir a coluna de classificação de nossa tabela de dados especificando o nome da coluna como DataView.Sort = "Col_name". Por padrão, este método classifica a tabela de dados em ordem crescente. Podemos especificar desc após o nome da coluna para classificar a tabela de dados em ordem decrescente. Podemos então converter este DataView em DataTable com a função DataView.ToTable() em C#. O exemplo de código a seguir nos mostra como podemos classificar uma tabela de dados com a propriedade DataView.Sort em 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]);
      }
    }
  }
}

Resultado:

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

No código acima, primeiro criamos uma tabela de dados table1 e adicionamos duas colunas a ela Price e Rating. Em seguida, classificamos a tabela pela ordem decrescente de Preço e exibimos os novos valores. Criamos uma nova instância da classe DataView e a classificamos com a propriedade DataView.Sort. Em seguida, convertemos o DataView classificado em DataTable com a função DataView.ToTable() em C#. No final, exibimos os dados na tabela classificada.

Classifique DataTable com a propriedade DataTable.DefaultView em C#

A propriedade DataTable.DefaultView é usada para obter uma visualização personalizada de uma tabela de dados em C#. Podemos classificar nossa tabela de dados especificando a coluna de classificação na propriedade DataTable.DefaultView.Sort. Por padrão, este método classifica a tabela de dados em ordem crescente. Podemos especificar desc após o nome da coluna para classificar a tabela de dados em ordem decrescente. Podemos então converter essa exibição classificada em uma tabela de dados com a função DefaultView.ToTable() em C#. O exemplo de código a seguir nos mostra como podemos classificar uma tabela de dados com a propriedade DataTable.DefaultView em 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]);
      }
    }
  }
}

Resultado:

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

No código acima, primeiro criamos uma tabela de dados table1 e adicionamos duas colunas, Price e Rating. Em seguida, classificamos a tabela table1 pela ordem decrescente de Price e exibimos os novos valores. Criamos uma visualização classificada de nossa tabela table1 com a propriedade table1.DefaultView.Sort. Em seguida, convertemos essa exibição classificada em uma tabela com a função table1.DefaultView.ToTable(true) em C#. No final, exibimos os dados na tabela classificada.

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

Artigo relacionado - Csharp DataTable