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介面或使用IComparer 介面。用於對物件進行排序。 這可讓排序演算法了解您物件的比較規則。 以下程式碼示範如何依照年齡對 Person 物件陣列進行排序:
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() 方法反轉。此方法能高效地反轉陣列中元素的順序。
如何在 C# 中利用 LINQ 進行排序?
LINQ 提供了一種聲明性方法來對 C# 中的陣列進行排序。您可以使用 OrderBy 方法以升序排序,以及使用 OrderByDescending 以降序排序。
將 PDF 庫與陣列排序結合使用有什麼好處?
使用像 IronPDF 這樣的 PDF 庫可以在生成 PDF 之前對數據進行排序,確保輸出是有組織結構的,這對於創建動態報告或表格特別有用。
如何將 PDF 庫集成到我的 C# 項目中?
您可以通過在 NuGet 包管理器控制台中使用指令 Install-Package IronPDF 或在 NuGet 包管理器中搜索來將像 IronPDF 這樣的 PDF 庫集成到您的 C# 項目中。
排序後的陣列能否用於 PDF 文件生成?
是的,排序後的陣列經常用於 PDF 文件生成以按照邏輯順序呈現數據。這可以包括組織表格或清單以提高最終 PDF 的可讀性和結構性。
是否有可用於測試 PDF 庫的免費試用版?
是的,IronPDF 提供免費的試用版授權,允許您在購買永久授權之前測試其功能和商業用途。



