.NET HELP

C# Sorted List (How it Works for Developers)

Published December 15, 2024
Share:

Introduction to C# SortedList

What is a SortedList?

The C# Sorted List class in C# is a collection of key-value pairs, similar to a dictionary, but with the added benefit of automatic sorting by keys. It’s 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 by key efficiently.

When it comes to working with SortedLists alongside PDF generation tasks, IronPDF integrates perfectly with this class, giving you even more 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: SortedList is 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 it organizes its items by key. Internally, it uses a sorted array to keep key values in order, meaning that while lookups by key are efficient, 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, so no extra sorting is needed.
  • Cons:

    • Insertion Speed: Slower than Dictionary for insertions, especially with large data.
    • Limited Efficiency for Non-Key Operations: Limited in cases where data isn’t accessed primarily by specific key values.

Working with C# SortedList

Creating a SortedList

To create a SortedList in C#, you can use either the default constructor or pass in an IComparer if you need custom sorting. The SortedList has a default initial capacity of 16, but if you know the approximate size beforehand, this can be specified to improve performance.

SortedList<int, string> sortedList = new SortedList<int, string>();
SortedList<int, string> sortedList = new SortedList<int, string>();
Dim sortedList As New SortedList(Of Integer, String)()
VB   C#

Adding Items

You can add key-value pairs to the SortedList using the Add method, which will keep items sorted by key. In this following code example, the SortedList is sorted by the specified key values, automatically keeping the data in ascending order.

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")
VB   C#

Accessing and Modifying Elements

Access elements in a SortedList by using their keys. You can retrieve or modify any specified value associated with keys directly.

// Accessing a specific value by key
string value = sortedList[1];  // "Apple"
// Modifying a value
sortedList[1] = "Avocado";
// Accessing a specific value by key
string value = sortedList[1];  // "Apple"
// Modifying a value
sortedList[1] = "Avocado";
' Accessing a specific value by key
Dim value As String = sortedList(1) ' "Apple"
' Modifying a value
sortedList(1) = "Avocado"
VB   C#

Removing Items

You can remove items using specified keys using the Remove method or remove them using the specified index using RemoveAt. Both options allow for controlled deletion of specified object data in the SortedList.

sortedList.Remove(3);       // Removes key 3
sortedList.RemoveAt(0);     // Removes item at a zero-based index 0
sortedList.Remove(3);       // Removes key 3
sortedList.RemoveAt(0);     // Removes item at a zero-based index 0
sortedList.Remove(3) ' Removes key 3
sortedList.RemoveAt(0) ' Removes item at a zero-based index 0
VB   C#

Iterating Over a SortedList

You can iterate over SortedList using a foreach loop, which retrieves 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
VB   C#

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 stay 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 than Dictionary due to its sorting mechanism.
  • SortedList vs. List: Unlike a list, SortedList is designed for accessing elements by key and keeps elements in 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 start using IronPDF, install the IronPDF NuGet package:

Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
VB   C#

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"}
}
VB   C#

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

ChromePdfRenderer renderer = new ChromePdfRenderer();
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>";
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("sortedList.pdf");
ChromePdfRenderer renderer = new ChromePdfRenderer();
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>";
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("sortedList.pdf");
Dim renderer As New ChromePdfRenderer()
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>"
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("sortedList.pdf")
VB   C#

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 key and needs to stay sorted.
  • Using IronPDF for Exporting: IronPDF is a convenient library for exporting SortedList data to a PDF, 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. With this trial, you can test PDF generation, customization options, and integration into their existing projects to ensure it meets their needs. By combining SortedList and IronPDF, developers gain a robust, efficient solution for managing and reporting sorted data in C# applications.

< PREVIOUS
C# Trim (How it Works for Developers)
NEXT >
C# Float (How it Works for Developers)

Ready to get started? Version: 2024.12 just released

Free NuGet Download Total downloads: 11,938,203 View Licenses >