在 C# 中對 DataTable 進行排序

Muhammad Maisam Abbas 2023年1月30日 2021年4月29日
  1. 使用 C# 中的 DataView.Sort 屬性對 DataTable 進行排序
  2. 使用 C# 中的 DataTable.DefaultView 屬性對 DataTable 進行排序
在 C# 中對 DataTable 進行排序

本教程將介紹在 C# 中對資料表進行排序的方法。

使用 C# 中的 DataView.Sort 屬性對 DataTable 進行排序

DataView.Sort 屬性用於獲取或設定 C# 中資料表的排序列。我們可以通過指定列名來設定資料表的排序列,如 DataView.Sort = "Col_name"。預設情況下,此方法以升序對資料表進行排序。我們可以在列名之後指定 desc 來對資料表進行降序排序。然後我們可以使用 C# 中的 DataView.ToTable() 函式將此 DataView 轉換為 DataTable。以下程式碼示例向我們展示瞭如何使用 C# 中的 DataView.Sort 屬性對資料表進行排序。

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]);
            }

        }
    }
}

輸出:

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

在上面的程式碼中,我們首先建立了一個資料表 table1,並向其新增了兩列 PriceRating。然後,我們按照 Price 的降序對錶格進行排序,並顯示新值。我們建立了 DataView 類的新例項,並使用 DataView.Sort 屬性對其進行了排序。然後,我們使用 C# 中的 DataView.ToTable() 函式將排序後的 DataView 轉換為 DataTable。最後,我們在排序表中顯示了資料。

使用 C# 中的 DataTable.DefaultView 屬性對 DataTable 進行排序

DataTable.DefaultView 屬性用於獲取 C# 中資料表的自定義檢視。我們可以通過在 DataTable.DefaultView.Sort 屬性中指定排序列來對資料表進行排序。預設情況下,此方法以升序對資料表進行排序。我們可以在列名之後指定 desc 來對資料表進行降序排序。然後,我們可以使用 C# 中的 DefaultView.ToTable() 函式將排序後的檢視轉換為資料表。以下程式碼示例向我們展示瞭如何使用 C# 中的 DataTable.DefaultView 屬性對資料表進行排序。

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]);
            }

        }
    }
}

輸出:

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

在上面的程式碼中,我們首先建立了一個資料表 table1,並新增了 PriceRating 兩列。然後,我們按照 Price 的降序對 table1 表進行排序,並顯示新值。我們使用 table1.DefaultView.Sort 屬性建立了 table1 表的排序檢視。然後,我們使用 C# 中的 table1.DefaultView.ToTable(true) 函式將排序後的檢視轉換為表。最後,我們在排序表中顯示了資料。

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

相關文章 - Csharp DataTable