Ordinare DataTable in C#

Muhammad Maisam Abbas 16 febbraio 2024
  1. Ordina DataTable con la proprietà DataView.Sort in C#
  2. Ordina DataTable con la proprietà DataTable.DefaultView in C#
Ordinare DataTable in C#

Questo tutorial introdurrà i metodi per ordinare un datatable in C#.

Ordina DataTable con la proprietà DataView.Sort in C#

La proprietà DataView.Sort viene utilizzata per ottenere o impostare la colonna di ordinamento di un datatable in C#. Possiamo impostare la colonna di ordinamento del nostro datatable specificando il nome della colonna come DataView.Sort = "Col_name". Per impostazione predefinita, questo metodo ordina i dati disponibili in ordine crescente. Possiamo specificare desc dopo il nome della colonna per ordinare i dati in ordine decrescente. Possiamo quindi convertire questo DataView in un DataTable con la funzione DataView.ToTable() in C#. Il seguente esempio di codice ci mostra come ordinare un datatable con la proprietà DataView.Sort in 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]);
      }
    }
  }
}

Produzione:

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

Nel codice sopra, abbiamo prima creato una table1 databile e aggiunto due colonne Price e Rating. Quindi abbiamo ordinato la tabella in ordine decrescente di Prezzo e visualizzato i nuovi valori. Abbiamo creato una nuova istanza della classe DataView e l’abbiamo ordinata con la proprietà DataView.Sort. Abbiamo quindi convertito il DataView ordinato in un DataTable con la funzione DataView.ToTable() in C#. Alla fine, abbiamo visualizzato i dati nella tabella ordinata.

Ordina DataTable con la proprietà DataTable.DefaultView in C#

La proprietà DataTable.DefaultView viene utilizzata per ottenere una visualizzazione personalizzata di un datatable in C#. Possiamo ordinare il nostro datatable specificando la colonna di ordinamento nella proprietà DataTable.DefaultView.Sort. Per impostazione predefinita, questo metodo ordina i dati disponibili in ordine crescente. Possiamo specificare desc dopo il nome della colonna per ordinare i dati in ordine decrescente. Possiamo quindi convertire quella vista ordinata in una datatable con la funzione DefaultView.ToTable() in C#. Il seguente esempio di codice ci mostra come ordinare un datatable con la proprietà DataTable.DefaultView in 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]);
      }
    }
  }
}

Produzione:

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

Nel codice sopra, abbiamo prima creato una table1 databile e aggiunto due colonne, Price e Rating. Quindi abbiamo ordinato la tabella table1 in ordine decrescente di Price e abbiamo visualizzato i nuovi valori. Abbiamo creato una vista ordinata della nostra tabella table1 con la proprietà table1.DefaultView.Sort. Abbiamo quindi convertito quella vista ordinata in una tabella con la funzione table1.DefaultView.ToTable(true) in C#. Alla fine, abbiamo visualizzato i dati nella tabella ordinata.

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

Articolo correlato - Csharp DataTable