Zum Fußzeileninhalt springen
.NET HILFE

C# Sortierte Liste (Wie es für Entwickler funktioniert)

Introduction to C# SortedList

What is a SortedList?

The C# SortedList class is a collection of key-value pairs, similar to a dictionary, but it has the added benefit of automatic sorting by keys. It is part of the System.Collections.Generic namespace and is designed for scenarios where you need quick access to sorted data. SortedList<TKey, TValue> is ideal when you need to maintain data in a particular order and access elements efficiently by key.

When working with SortedLists alongside PDF generation tasks, IronPDF integrates perfectly with this class, providing enhanced control over PDF generation.

Key Features and Use Cases

  • Key-Value Pair Storage: Like a dictionary, SortedList stores data as key-value pairs.
  • Automatic Sorting: SortedList keeps associated values sorted by key in ascending order by default.
  • Efficient Data Retrieval: Quick retrieval of associated values by key makes it suitable for lookups.
  • Use Cases: Useful for applications needing sorted data, such as managing ordered lists of names, dates, or numerical values.

How SortedList Works

Data Structure Overview

The public class SortedList is a hybrid between an array and a hash table and organizes its items by key. Internally, it uses a sorted array to keep key values in order, ensuring efficient lookups by key. However, insertion and deletion operations can be slower than in a Dictionary.

Sorting Mechanism

By default, SortedList<TKey, TValue> sorts keys in ascending order using the IComparable interface, which ensures that string keys and other types implement a default comparison behavior. If a custom sorting order is needed, a custom comparer can be provided.

Advantages and Limitations

  • Pros:
    • Fast Key Access: Provides fast O(log n) access by key.
    • Sorted Order: Data is automatically sorted by key without additional sorting overhead.
  • Cons:
    • Insertion Speed: Slower than Dictionary for insertions, especially with large data sizes.
    • Limited Efficiency for Non-Key Operations: Less efficient in scenarios where data isn’t accessed primarily by specific key values.

Working with C# SortedList

Creating a SortedList

You can create a SortedList in C# using either the default constructor or by passing an IComparer if custom sorting is needed. The SortedList has a default initial capacity of 16, which can be adjusted for performance improvements when the approximate size is known.

// 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

Adding Items

Add key-value pairs to the SortedList using the Add method. This keeps items sorted by key. The following code keeps the SortedList data in ascending order of keys.

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

Accessing and Modifying Elements

Access elements in a SortedList by their keys. You can retrieve or modify values associated with keys directly.

// 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

Removing Items

Remove items using specific keys with the Remove method or using the specified index with RemoveAt. Both allow controlled deletion of objects from the 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

Iterating Over a SortedList

Iterate over SortedList using a foreach loop to retrieve both keys and values in sorted order.

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# Sorted List (How it Works for Developers): Figure 1

Practical Examples of Using SortedList

  • Example 1: Storing and retrieving data in a simple key-value format where order matters, such as student names by their roll numbers.
  • Example 2: Using SortedList in more complex scenarios, such as displaying sorted transaction logs or ranked scores.

Best Practices:

  • Use SortedList when keys are the primary access point and need to remain sorted.
  • For frequent insertions, consider alternatives like SortedDictionary for better performance.

Performance Considerations

Comparing SortedList with Dictionary and List

  • SortedList vs. Dictionary: SortedList is slower for insertions compared to Dictionary due to sorting overhead.
  • SortedList vs. List: Unlike a list, SortedList is designed for accessing elements by key and maintaining sorted order.

When to Use SortedList: Use it when you need sorted data and primarily access it by key, especially for read-heavy scenarios.

Integration with IronPDF for PDF Export

Introduction to IronPDF

C# Sorted List (How it Works for Developers): Figure 2

IronPDF is a powerful library for generating and modifying PDF files in C#. It allows developers to create PDFs from various sources, add content programmatically, and customize PDF layouts. In this section, we’ll use IronPDF to create a PDF report from SortedList data.

Generating PDF Reports from SortedList Data

To begin using IronPDF, install the IronPDF NuGet package:

Install-Package IronPdf

Example: Exporting Data from a SortedList to a PDF

The following example demonstrates how to export data from a SortedList to a PDF table.

First, set up your 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

Next, use IronPDF to generate a PDF from this data:

// 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# Sorted List (How it Works for Developers): Figure 3

This code creates an HTML table from the SortedList data and converts it into a PDF using IronPDF.

Advanced Features

  • Customizing PDF Layout: IronPDF allows CSS styling for layouts, fonts, colors, etc.
  • Headers and Footers: IronPDF supports headers and footers, which can include page numbers or logos.

Summary and Best Practices

  • SortedList Overview: SortedList is a sorted key-value collection, best for scenarios where data is accessed by specific keys and needs to remain sorted.
  • Using IronPDF for Exporting: IronPDF is a convenient library for exporting SortedList data to PDFs, supporting custom layouts and styling.

Conclusion

In this article, we explored the C# SortedList class, a powerful tool for managing sorted, key-value data collections. SortedList is especially useful in scenarios where order and efficient access by key are critical. From creating, adding, and removing elements to integrating with IronPDF for PDF export, we covered practical steps and best practices for using SortedList in real-world applications.

Additionally, we showcased how IronPDF can simplify the task of exporting specified values from a SortedList to PDF format, allowing for the easy creation of professional, well-organized reports. IronPDF’s versatility, including customizable headers, footers, and CSS styling, makes it an excellent choice for generating PDFs directly from your C# applications.

If you’re interested in trying IronPDF, it offers a free trial that allows you to explore its full range of features without commitment. This trial enables testing of PDF generation, customization options, and integration into existing projects to ensure it meets your needs. By combining SortedList and IronPDF, developers gain a robust, efficient solution for managing and reporting sorted data in C# applications.

Häufig gestellte Fragen

Was ist eine C# SortedList und wie funktioniert sie?

Eine C# SortedList ist eine Sammlung von Schlüssel-Wert-Paaren, die die Schlüssel automatisch sortiert. Sie gehört zum System.Collections.Generic-Namespace und ist nützlich für Szenarien, in denen der Zugriff auf sortierte Daten erforderlich ist. Die SortedList hält ihre Ordnung mit einer hybriden Struktur zwischen einem Array und einer Hash-Tabelle, die effizienten schlüsselbasierten Zugriff bietet.

Wie kann ich eine SortedList in C# erstellen?

Sie können eine SortedList in C# erstellen, indem Sie den Standardkonstruktor verwenden oder einen IComparer für benutzerdefinierte Sortierungen übergeben. Ein Beispiel für das Erstellen einer SortedList ist: SortedList sortedList = new SortedList();

Welche Vorteile bietet die Verwendung einer SortedList gegenüber einem Dictionary in C#?

Der Hauptvorteil der Verwendung einer SortedList gegenüber einem Dictionary besteht darin, dass eine SortedList die Schlüssel automatisch sortiert, was von Vorteil ist, wenn Sie sortierte Daten benötigen und hauptsächlich auf sie über den Schlüssel zugreifen. Dies ist besonders in leselastigen Szenarien nützlich.

Wie kann ich Elemente zu einer C# SortedList hinzufügen?

Elemente können zu einer C# SortedList mit der Add-Methode hinzugefügt werden. Diese Methode stellt sicher, dass die Elemente nach Schlüssel sortiert bleiben und die Ordnung der SortedList beibehalten wird.

Kann eine SortedList verwendet werden, um Daten als PDF zu exportieren?

Ja, Sie können IronPDF verwenden, um PDF-Berichte aus SortedList-Daten zu erstellen. Dadurch können Entwickler PDF-Dokumente aus Sammlungen sortierter Schlüssel-Wert-Daten erstellen, was die Integrationsfähigkeiten von IronPDF mit C#-Anwendungen unterstreicht.

Was sind einige gängige Anwendungen einer C# SortedList?

Gängige Anwendungen einer C# SortedList umfassen das Speichern geordneter Listen wie Schülernamen nach Rollennummern oder das Führen sortierter Transaktionsprotokolle. Sie ist besonders nützlich in Anwendungen, in denen Daten in geordneter Reihenfolge abgerufen werden müssen.

Wie verhält sich eine SortedList in Bezug auf Einfüge- und Löschoperationen?

Eine SortedList kann langsamer als ein Dictionary bei Einfüge- und Löschoperationen sein, insbesondere bei großen Datenmengen. Dies liegt an ihrer hybriden Struktur, die effiziente Suchvorgänge und die Beibehaltung der Sortierreihenfolge priorisiert.

Was ist die Standardsortierreihenfolge von Schlüsseln in einer C# SortedList?

Die Standardsortierreihenfolge in einer C# SortedList ist aufsteigend. Sie verwendet das IComparable-Interface, um die Schlüssel automatisch zu sortieren, es sei denn, es wird ein benutzerdefinierter IComparer bereitgestellt.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen