跳過到頁腳內容
.NET幫助

C# 排序列表 (如何為開發人員運作)

C# SortedList 入門

什麼是 SortedList?

C# SortedList 類別是鍵值對的集合,類似於字典,但它還有一個額外的好處,就是按鍵自動排序。 它是 System.Collections.Generic 命名空間的一部分,專為需要快速存取排序資料的場景而設計。 當您需要以特定順序維護資料並按鍵有效存取元素時,SortedList<TKey, TValue> 是理想之選。

當使用 SortedLists 與 PDF 生成任務一起工作時,IronPDF 可與此類完美整合,提供增強的 PDF 生成控制。

主要功能和使用案例

*鍵值對儲存:*與字典類似,SortedList 將資料儲存為鍵值對。 自動排序:預設情況下,SortedList 會按鍵升序排列關聯的值。 高效率的資料擷取:按鍵快速擷取關聯值,使其適用於尋找。 使用案例:**適用於需要排序資料的應用程序,例如管理有序的名稱、日期或數值清單。

SortedList 如何運作

資料結構概述

公用類別 SortedList 是陣列和雜湊表的混合體,它按鍵組織其項目。 在內部,它使用排序陣列來保持關鍵值的順序,以確保依關鍵進行有效的查詢。 但是,插入和刪除操作可能比在 Dictionary 中慢。

排序機制

預設情況下,SortedList<TKey, TValue> 使用 IComparable 介面按升序對鍵進行排序,這確保字串鍵和其他類型實現預設的比較行為。 如果需要自訂排序順序,可提供自訂比較器。

優點和限制

優點: *快速金鑰存取:*提供快速的 O(log n) 金鑰存取。 按鍵自動排序:資料按鍵自動排序,無需額外的排序開銷。 缺點: 插入速度:Dictionary 慢,尤其是在資料量較大時。 非鍵操作效率有限:**在資料並非主要透過特定鍵值存取的情況下,效率較低。

使用 C# SortedList工作

建立排序清單

您可以使用預設建構函數或在需要自訂排序時傳遞 IComparer 在 C# 中建立 SortedListSortedList 的預設初始容量為 16,當知道大致大小時,可以調整此值以提高效能。

// Create a SortedList with integer keys and string values
SortedList<int, string> sortedList = new SortedList<int, string>();
// Create a SortedList with integer keys and string values
SortedList<int, string> sortedList = new SortedList<int, string>();
' Create a SortedList with integer keys and string values
Dim sortedList As New SortedList(Of Integer, String)()
$vbLabelText   $csharpLabel

新增項目

使用 Add 方法為 SortedList 新增鍵值對。 這將保持項目按關鍵字排序。 以下程式碼將 SortedList 資料保持在按鍵升序排列。

sortedList.Add(1, "Apple");
sortedList.Add(3, "Banana");
sortedList.Add(2, "Cherry");
sortedList.Add(1, "Apple");
sortedList.Add(3, "Banana");
sortedList.Add(2, "Cherry");
sortedList.Add(1, "Apple")
sortedList.Add(3, "Banana")
sortedList.Add(2, "Cherry")
$vbLabelText   $csharpLabel

存取與修改元件

透過鍵存取 SortedList 中的元素。 您可以直接擷取或修改與鍵值相關的值。

// Accessing a specific value by key
string value = sortedList[1];  // Retrieves "Apple"
// Modifying a value
sortedList[1] = "Avocado";   // Changes the value associated with key 1 to "Avocado"
// Accessing a specific value by key
string value = sortedList[1];  // Retrieves "Apple"
// Modifying a value
sortedList[1] = "Avocado";   // Changes the value associated with key 1 to "Avocado"
' Accessing a specific value by key
Dim value As String = sortedList(1) ' Retrieves "Apple"
' Modifying a value
sortedList(1) = "Avocado" ' Changes the value associated with key 1 to "Avocado"
$vbLabelText   $csharpLabel

移除項目

使用 Remove 方法刪除使用特定鍵的項目,或使用 RemoveAt 方法刪除使用指定索引的項目。 兩者都允許從 SortedList 中受控刪除物件。

sortedList.Remove(3);       // Removes the entry with key 3
sortedList.RemoveAt(0);     // Removes the entry at the zero-based index 0
sortedList.Remove(3);       // Removes the entry with key 3
sortedList.RemoveAt(0);     // Removes the entry at the zero-based index 0
sortedList.Remove(3) ' Removes the entry with key 3
sortedList.RemoveAt(0) ' Removes the entry at the zero-based index 0
$vbLabelText   $csharpLabel

迭代排序清單

使用循環遍歷 SortedList,依排序順序擷取鍵和值。

foreach (KeyValuePair<int, string> kvp in sortedList)
{
    Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}");
}
foreach (KeyValuePair<int, string> kvp in sortedList)
{
    Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}");
}
For Each kvp As KeyValuePair(Of Integer, String) In sortedList
	Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}")
Next kvp
$vbLabelText   $csharpLabel

C# 排序列表 (開發人員如何使用):圖 1

使用 SortedList 的實用範例

*範例 1:*以簡單的鍵值格式儲存和擷取資料,其中順序很重要,例如按學號儲存學生姓名。 範例 2:**在更複雜的情境中使用 SortedList,例如顯示排序的交易日誌或排名分數。

最佳實踐:

  • 當金鑰是主要存取點且需要保持排序時,請使用 SortedList
  • 對於頻繁插入的情況,請考慮使用 SortedDictionary 等替代方案以獲得更好的性能。

效能考量

SortedList 與 Dictionary 和 List 的比較

  • SortedList 與 Dictionary:由於排序開銷,SortedList 的插入速度比 Dictionary 慢。
  • SortedList 與 List 的差異:與清單不同,SortedList 旨在透過鍵存取元素並保持排序順序。

何時使用 SortedList:當您需要排序資料並且主要透過鍵存取資料時,尤其是在讀取密集型場景中,可以使用 SortedList。

與 IronPDF 整合以進行 PDF 匯出。

IronPDF 簡介

C# 排序列表(對開發者而言如何運作):圖 2

IronPDF 是一個功能強大的函式庫,可用於在 C# 中產生和修改 PDF 檔案。 它允許開發人員從各種來源建立 PDF、以程式化方式新增內容,以及自訂 PDF 版面。 在本節中,我們將使用 IronPDF 從 SortedList 資料建立 PDF 報表。

從 SortedList 資料產生 PDF 報表

要開始使用 IronPDF,請安裝 IronPDF NuGet 套件:

Install-Package IronPdf

範例:將資料從 SortedList 匯出至 PDF

以下範例示範如何將資料從 SortedList 匯出至 PDF 表格。

首先,設定您的 SortedList:

SortedList<int, string> sortedList = new SortedList<int, string>
{
    { 1, "Apple" },
    { 2, "Banana" },
    { 3, "Cherry" }
};
SortedList<int, string> sortedList = new SortedList<int, string>
{
    { 1, "Apple" },
    { 2, "Banana" },
    { 3, "Cherry" }
};
Dim sortedList As New SortedList(Of Integer, String) From {
	{1, "Apple"},
	{2, "Banana"},
	{3, "Cherry"}
}
$vbLabelText   $csharpLabel

接下來,使用 IronPDF 從這些資料產生 PDF:

// Initialize a PDF renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Build HTML string with table format
string html = "<h1>Sorted List Data</h1><table border='1'><tr><th>Key</th><th>Value</th></tr>";
foreach (var kvp in sortedList)
{
    html += $"<tr><td>{kvp.Key}</td><td>{kvp.Value}</td></tr>";
}
html += "</table>";

// Render HTML to PDF and save it
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("sortedList.pdf");
// Initialize a PDF renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();

// Build HTML string with table format
string html = "<h1>Sorted List Data</h1><table border='1'><tr><th>Key</th><th>Value</th></tr>";
foreach (var kvp in sortedList)
{
    html += $"<tr><td>{kvp.Key}</td><td>{kvp.Value}</td></tr>";
}
html += "</table>";

// Render HTML to PDF and save it
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("sortedList.pdf");
' Initialize a PDF renderer
Dim renderer As New ChromePdfRenderer()

' Build HTML string with table format
Dim html As String = "<h1>Sorted List Data</h1><table border='1'><tr><th>Key</th><th>Value</th></tr>"
For Each kvp In sortedList
	html &= $"<tr><td>{kvp.Key}</td><td>{kvp.Value}</td></tr>"
Next kvp
html &= "</table>"

' Render HTML to PDF and save it
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("sortedList.pdf")
$vbLabelText   $csharpLabel

C# 排序列表(對開發者而言如何運作):圖 3

此程式碼從 SortedList 資料建立 HTML 表格,並使用 IronPDF 將其轉換成 PDF。

進階功能

*自訂 PDF 佈局:* IronPDF 允許使用 CSS 樣式來設定佈局、字體、顏色等。 頁首和頁尾:** IronPDF 支援頁首和頁尾,其中可以包含頁碼或標誌。

摘要與最佳實務

  • SortedList 概述: SortedList 是一個排序的鍵值集合,最適合透過特定鍵存取資料並需要保持排序的場景。 *使用 IronPDF 匯出: IronPDF 是一個方便的庫,將 SortedList 資料匯出為 PDF,支援自訂佈局和樣式。

結論

在本文中,我們探討了 C# SortedList 類,這是用於管理已排序的鍵值資料集合的強大工具。 SortedList 在需要依序和透過金鑰高效存取的場景中特別有用。 從建立、新增和刪除元素到與IronPDF整合以匯出 PDF,我們介紹了在實際應用中使用 SortedList 的實用步驟和最佳實踐。

此外,我們也展示了IronPDF如何簡化將指定值從 SortedList 匯出到 PDF 格式的任務,從而輕鬆建立專業、條理清晰的報告。 IronPDF 的多功能性(包括可自訂的頁眉、頁腳和 CSS 造型)使其成為從您的 C# 應用程式直接產生 PDF 的絕佳選擇。

如果您有興趣試用 IronPDF,它提供 免費試用,讓您無需承諾即可探索其完整功能。 此試用版可測試 PDF 生成、自訂選項以及整合至現有專案,以確保符合您的需求。 透過將 SortedList 和 IronPDF 結合起來,開發人員可以獲得一個強大、高效的解決方案,用於在 C# 應用程式中管理和報告排序資料。

常見問題解答

什麼是 C# SortedList,它是如何運作的?

C# SortedList 是一組自動對鍵進行排序的鍵值對集合。它是 System.Collections.Generic 命名空間的一部分,適用於需要排序數據訪問的場景。SortedList 通過數組和哈希表之間的混合結構來維持其順序,提供有效的基於鍵的訪問。

如何在 C# 中創建 SortedList?

您可以通過使用默認構造函數或傳入 IComparer 以進行自定義排序來創建 C# 的 SortedList。創建 SortedList 的範例如下:SortedList sortedList = new SortedList();

使用 SortedList 創建 C# 和 Dictionary 的優勢有哪些?

使用 SortedList 創建 C# 的主要優勢在於 SortedList 會自動對鍵進行排序,當您需要有序資料且主要通過鍵進行訪問時,這尤其有益。這在讀寫頻繁的情景下特別有用。

如何將項目添加到 C# 的 SortedList 中?

可以使用 Add 方法將項目添加到 C# 的 SortedList 中。此方法確保項目按鍵排序,維持 SortedList 的順序。

SortedList 可以用來匯出資料為 PDF 嗎?

是的,您可以使用 IronPDF 來從 SortedList 資料生成 PDF 報告。這允許開發者從有序的鍵值資料集中創建 PDF 文件,展示 IronPDF 與 C# 應用程式的整合能力。

C# SortedList 的常見應用有哪些?

C# SortedList 的常見應用包括儲存有序列表,如按學號排序的學生姓名或維持有序的交易日誌。在數據需要以有序方式訪問的應用中,它特別實用。

SortedList 的插入和刪除操作表現如何?

由於其混合結構,SortedList 在插入和刪除操作上可能比 Dictionary 慢,尤其是大規模資料時。它優先於高效的查詢和有序維護。

C# SortedList 的默認鍵排序順序是什麼?

C# SortedList 的默認排序順序是升序,除非提供自定義 IComparer,否則它自動使用 IComparable 介面來對鍵排序。

Jacob Mellor, Team Iron 首席技術官
首席技術官

Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。

Jacob擁有曼徹斯特大學土木工程一級榮譽學士學位(1998年–2001年)。他於1999年在倫敦開立首家軟體公司,並於2005年建立了他的第一個.NET組件,專注於解決Microsoft生態系統中的複雜問題。

他的旗艦作品IronPDF和Iron Suite .NET程式庫全球已獲得超過3000萬次NuGet安裝,他的基礎代碼不斷在全球各地驅動開發者工具。擁有25年以上的商業經驗和41年的編碼專業知識,Jacob仍然專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我