C# 陣列排序(開發者的工作原理)
陣列在 C# 程式設計中扮演著重要的角色,提供了儲存與操作資料集合的便利方式。 使用陣列時的一個基本操作是排序,在本文中,我們將探討在 C# 中建立排序陣列的多種方法。 到最後,您不僅會瞭解 array 排序的基本知識,還會發現如何利用 C# 提供的強大排序功能。
瞭解陣列的基礎知識
在深入瞭解排序之前,讓我們先重溫一下 C# 中陣列的基本知識。 陣列是相同資料類型的元素集合,儲存在連續的記憶體位置中。 這些工具提供使用索引符號存取元素的效率。
最簡單的方法:Array.Sort()
C# 使用指定的陣列方法 Sort()簡化了陣列排序。 此方法用途廣泛,可用於各種資料類型的陣列元素。下面是一個一維陣列的快速範例:
int[] numbers = { 5, 2, 8, 1, 7 };
Array.Sort(numbers);int[] numbers = { 5, 2, 8, 1, 7 };
Array.Sort(numbers);Dim numbers() As Integer = { 5, 2, 8, 1, 7 }
Array.Sort(numbers)上述程式碼將陣列元素以升序排序,使其為 { 1, 2, 5, 7, 8 }。
使用 IComparer 自訂排序。
雖然Array.Sort()方法對於簡單的情境很方便,但您可能會遇到需要自訂排序順序的情況。 這就是 IComparer 介面發揮作用的地方。 透過實作此介面,您可以定義用於陣列排序的比較邏輯。
using System.Collections;
class CustomComparer : IComparer
{
public int Compare(object x, object y)
{
int a = (int)x;
int b = (int)y;
// Compare a and b to order them descending
return b.CompareTo(a);
}
}
int[] numbers = { 5, 2, 8, 1, 7 };
Array.Sort(numbers, new CustomComparer());using System.Collections;
class CustomComparer : IComparer
{
public int Compare(object x, object y)
{
int a = (int)x;
int b = (int)y;
// Compare a and b to order them descending
return b.CompareTo(a);
}
}
int[] numbers = { 5, 2, 8, 1, 7 };
Array.Sort(numbers, new CustomComparer());Imports System.Collections
Friend Class CustomComparer
Implements IComparer
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
Dim a As Integer = DirectCast(x, Integer)
Dim b As Integer = DirectCast(y, Integer)
' Compare a and b to order them descending
Return b.CompareTo(a)
End Function
End Class
Private numbers() As Integer = { 5, 2, 8, 1, 7 }
Array.Sort(numbers, New CustomComparer())排序物件:IComparable 和 IComparer
排序自訂物件陣列需要實作 IComparable 介面或使用 IComparerPerson 物件陣列的邏輯:
using System;
class Person : IComparable<Person>
{
public string Name { get; set; }
public int Age { get; set; }
public int CompareTo(Person other)
{
// Compare Persons by age
return this.Age.CompareTo(other.Age);
}
}
// Array of people
Person[] people =
{
new Person { Name = "Alice", Age = 30 },
new Person { Name = "Bob", Age = 25 }
};
// Sort by age
Array.Sort(people);using System;
class Person : IComparable<Person>
{
public string Name { get; set; }
public int Age { get; set; }
public int CompareTo(Person other)
{
// Compare Persons by age
return this.Age.CompareTo(other.Age);
}
}
// Array of people
Person[] people =
{
new Person { Name = "Alice", Age = 30 },
new Person { Name = "Bob", Age = 25 }
};
// Sort by age
Array.Sort(people);Imports System
Friend Class Person
Implements IComparable(Of Person)
Public Property Name() As String
Public Property Age() As Integer
Public Function CompareTo(ByVal other As Person) As Integer Implements IComparable(Of Person).CompareTo
' Compare Persons by age
Return Me.Age.CompareTo(other.Age)
End Function
End Class
' Array of people
Private people() As Person = {
New Person With {
.Name = "Alice",
.Age = 30
},
New Person With {
.Name = "Bob",
.Age = 25
}
}
' Sort by age
Array.Sort(people)Array.Reverse():扭轉順序
在陣列排序之後,您可能需要反轉順序。 C# 提供的 Array.Reverse() 方法正是用於此目的。
int[] numbers = { 1, 2, 3, 4, 5 };
Array.Reverse(numbers);int[] numbers = { 1, 2, 3, 4, 5 };
Array.Reverse(numbers);Dim numbers() As Integer = { 1, 2, 3, 4, 5 }
Array.Reverse(numbers)現在,數字陣列將是 { 5, 4, 3, 2, 1 }。
善用 LINQ
對於偏好較聲明風格來排序陣列的人,也可以使用 LINQ(語言整合查詢)來排序陣列。 OrderBy 方法可用於升序排序,而 OrderByDescending 方法可用於降序排序。 這些方法提供了簡潔的方式來達到排序的目的。 以下範例使用了 LINQ 查詢語法:
using System.Linq;
int[] numbers = { 5, 2, 8, 1, 7 };
var sortedNumbers = numbers.OrderBy(x => x).ToArray();using System.Linq;
int[] numbers = { 5, 2, 8, 1, 7 };
var sortedNumbers = numbers.OrderBy(x => x).ToArray();Imports System.Linq
Private numbers() As Integer = { 5, 2, 8, 1, 7 }
Private sortedNumbers = numbers.OrderBy(Function(x) x).ToArray()介紹 IronPDF。

Learn more about IronPDF 是一個強大的 C# 函式庫,可直接從 HTML 簡化 PDF 文件的建立、修改和操作。 無論您是要產生報表、發票或任何其他動態內容,IronPDF 都能提供無縫的解決方案,讓您利用 C# 的強大功能來處理 PDF 相關的工作。
IronPDF 可將網頁和 HTML 轉換為 PDF,並保留原始格式。 它可以無縫整合到 .NET 專案中,讓開發人員可以自動生成 PDF 並改善工作流程。
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Class安裝 IronPdf:快速入門
要開始在您的 C# 專案中利用 IronPDF,您可以輕鬆安裝 IronPDF NuGet 套件。 在套件管理員控制台中使用下列指令:
Install-Package IronPdf
另外,您也可以在 NuGet 套件管理員中搜尋"IronPDF",並從中安裝。
。
使用 IronPDF 生成 PDF。
使用 IronPDF 創建 PDF 簡單直接。 讓我們考慮一個簡單的例子,我們使用 IronPDF 從 HTML 字串建立 PDF:
var htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>";
// Create a new PDF document
var pdfDocument = new IronPdf.ChromePdfRenderer();
pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("GeneratedDocument.pdf");var htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>";
// Create a new PDF document
var pdfDocument = new IronPdf.ChromePdfRenderer();
pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("GeneratedDocument.pdf");Dim htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>"
' Create a new PDF document
Dim pdfDocument = New IronPdf.ChromePdfRenderer()
pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("GeneratedDocument.pdf")在這個範例中,我們使用 IronPDF 將 HTML 內容渲染成 PDF 文件。 產生的 PDF"GeneratedDocument.pdf"會儲存到指定的位置。 有關如何產生 PDF 的詳細資訊,請造訪 IronPDF 文件 頁面。
使用 IronPDF 進行陣列排序。
現在,問題出現了:我們之前探討過的陣列排序技術能否與 IronPDF 無縫整合? 答案是肯定的。
考慮一種情況:您有一陣列資料,希望以表格格式呈現在 PDF 中。 您可以在產生 PDF 之前利用陣列排序來組織資料,以確保輸出更有條理且對使用者更友善。
using System.Linq;
// Sample array of data
string[] names = { "Alice", "Charlie", "Bob", "David" };
// Sorting the array alphabetically
Array.Sort(names);
// Generating PDF content with sorted data
var sortedPdfContent = $@"
<html>
<body>
<h1>Sorted Names</h1>
<ul>
{string.Join("", names.Select(name => $"<li>{name}</li>"))}
</ul>
</body>
</html>
";
// Create a new PDF document with sorted data
var sortedPdfDocument = new IronPdf.ChromePdfRenderer();
sortedPdfDocument.RenderHtmlAsPdf(sortedPdfContent).SaveAs("SortedNames.pdf");using System.Linq;
// Sample array of data
string[] names = { "Alice", "Charlie", "Bob", "David" };
// Sorting the array alphabetically
Array.Sort(names);
// Generating PDF content with sorted data
var sortedPdfContent = $@"
<html>
<body>
<h1>Sorted Names</h1>
<ul>
{string.Join("", names.Select(name => $"<li>{name}</li>"))}
</ul>
</body>
</html>
";
// Create a new PDF document with sorted data
var sortedPdfDocument = new IronPdf.ChromePdfRenderer();
sortedPdfDocument.RenderHtmlAsPdf(sortedPdfContent).SaveAs("SortedNames.pdf");Imports System.Linq
' Sample array of data
Private names() As String = { "Alice", "Charlie", "Bob", "David" }
' Sorting the array alphabetically
Array.Sort(names)
' Generating PDF content with sorted data
, String.Join(TangibleTstring.Format(mpVerbatimDoubleQuote, names.Select(Function(name) $TangibleTempVerbatimCloseTag"<li>{name}</li>")), TangibleStringInterpolationMarker)var sortedPdfContent = $"TangibleTempVerbatimOpenTagTangibleTempVerbatimStringLiteralLineJoin <html>TangibleTempVerbatimStringLiteralLineJoin <body>TangibleTempVerbatimStringLiteralLineJoin <h1>Sorted Names</h1>TangibleTempVerbatimStringLiteralLineJoin <ul>TangibleTempVerbatimStringLiteralLineJoin {0}ignoreignoreignoreignoreignore</ul></body></html>"
' Create a new PDF document with sorted data
Dim sortedPdfDocument = New IronPdf.ChromePdfRenderer()
sortedPdfDocument.RenderHtmlAsPdf(sortedPdfContent).SaveAs("SortedNames.pdf")在本範例中,在將名稱陣列併入 HTML 內容之前,先將其按字母順序排序。 翻譯後的 PDF "SortedNames.pdf "將以排序方式顯示名稱。

結論
總而言之,掌握 C# 中的陣列排序對於有效率的資料處理是非常重要的。 無論您要處理的是簡單的數值陣列或是複雜的物件,C# 都能提供各種工具來滿足您的排序需求。 透過瞭解 Array.Sort()、使用 IComparer進行自訂排序,以及利用 LINQ 來獲得更具表達力的方法等基礎知識,您可以在 C# 專案中有效且優雅地處理陣列。
將 IronPDF 整合到您的 C# 專案中,不僅能提供功能強大的 PDF 生成工具,還能將陣列排序無縫整合到您的文件製作工作流程中。 無論您是組織表格資料或建立動態報表,陣列排序與 IronPDF 的協同效應都能讓您提升 C# 的文件產生能力。 因此,擁抱 C# 陣列排序的力量,提升您的程式設計能力!
常見問題解答
如何在 C# 中排序陣列?
您可以使用 Array.Sort() 方法在 C# 中排序陣列。此內建方法會以升序排序陣列中的元素,並且適用於各種資料類型。
C# 中有哪些方法可用於自訂排序?
C# 中的自訂排序可透過實作 IComparer 介面來實現。這可讓您定義排序元素的特定比較邏輯,在處理自訂物件時非常有用。
IComparable 介面如何協助陣列排序?
IComparable 介面允許物件將自身與其他物件進行比較,這對排序非常有用。透過實作此介面,您可以定義特定類別的物件應該如何比較。
陣列可以在 C# 中顛倒嗎?
是的,C# 中的陣列可以使用 Array.Reverse() 方法反轉。這個方法可以有效地顛倒陣列中元素的順序。
如何利用 LINQ 在 C# 中進行排序?
LINQ 提供了在 C# 中排序陣列的宣告式方法。您可以使用 OrderBy 方法以升序排序,並使用 OrderByDescending 方法以降序排序。
結合陣列排序使用 PDF 函式庫有什麼好處?
使用 IronPDF 之類的 PDF 函式庫,可以在產生 PDF 之前對資料進行排序,確保輸出內容有條理、有結構,這對於建立動態報表或表格特別有用。
如何將 PDF 函式庫整合到 C# 專案中?
您可以透過 NuGet 套件管理員控制台,使用指令 Install-Package IronPdf 安裝 IronPDF,或在 NuGet 套件管理員中搜尋 IronPDF,將 IronPDF 之類的 PDF 函式庫整合到您的 C# 專案中。
排序陣列可以用在 PDF 文件生成中嗎?
是的,排序陣列通常用於製作 PDF 文件,以符合邏輯的順序呈現資料。這可能包括組織表格或清單,以加強最終 PDF 的可讀性和結構。
是否有可用於測試 PDF 函式庫的免費試用版本?
是的,IronPDF 提供免費的試用授權,讓您可以在購買永久授權之前測試其商業用途的特性和功能。







