.NET-HILFE

C# Orderby (Wie es für Entwickler funktioniert)

Jordi Bardia
Jordi Bardia
18. Februar 2024
Teilen Sie:

Sortieren ist eine grundlegende Operation in jeder Programmiersprache, und die C# OrderBy-Methode ist ein leistungsfähiges Werkzeug für die Anordnung von Elementen in Sammlungen. Egal, ob Sie mit Arrays, Listen oder anderen aufzählbaren Strukturen arbeiten, wenn Sie wissen, wie Sie OrderBy nutzen können, können Sie die Lesbarkeit und Funktionalität Ihres Codes erheblich verbessern.

Später in diesem Artikel werden wir Folgendes vorstellenIronPDF-Bibliothek von Iron Software und wie wir die LINQ OrderBy-Methode und IronPDF verwenden können, um formatierte und sortierte PDFs zu erzeugen.

Was ist die LINQ OrderBy-Methode?

Die Methode OrderBy ist Teil der LINQ(Sprachintegrierte Abfrage) bibliothek in C# und ist speziell dafür ausgelegt, Elemente in aufsteigender Reihenfolge zu sortieren; da die Daten standardmäßig aufsteigend sortiert werden, ist ein aufsteigendes Schlüsselwort nicht erforderlich.

Wie man die LINQ OrderBy-Methode verwendet

Sortieren von Daten in aufsteigender Reihenfolge

In C# gibt es zwei Möglichkeiten, diese Methode anzuwenden: durch Methodensyntax oder Abfragesyntax. Wir werden die Methodensyntax verwenden, da sie einfach zu handhaben ist:

var sortedCollection = collection.OrderBy(item => item.OrderByProperty);
var sortedCollection = collection.OrderBy(item => item.OrderByProperty);

Hier ist die Sammlung die IEnumerable'-Quellsammlung, die sortiert werden soll, undOrderByProperty` ist die Eigenschaft oder der Ausdruck, nach dem die Elemente sortiert werden sollen. Die Methode der Lambda-Ausdruckserweiterung innerhalb von "OrderBy" gibt das Sortierkriterium an.

Sortieren von Daten in absteigender Reihenfolge

Um in absteigender Reihenfolge zu sortieren, können Sie die Methode OrderByDescending unter Verwendung der methodenbasierten Syntax verwenden:

var sortedCollectionDesc = collection.OrderByDescending(item => item.OrderByProperty);
var sortedCollectionDesc = collection.OrderByDescending(item => item.OrderByProperty);

Sortieren von Daten nach mehreren Kriterien

In der Praxis müssen Sie häufig eine Sammlung nach mehreren Kriterien sortieren. orderBy" ermöglicht dies durch die Verkettung mehrerer "ThenBy"- oder "ThenByDescending"-Aufrufe:

var multiSortedCollection = collection
    .OrderBy(item => item.OrderByProperty1)
    .ThenByDescending(item => item.OrderByProperty2);
var multiSortedCollection = collection
    .OrderBy(item => item.OrderByProperty1)
    .ThenByDescending(item => item.OrderByProperty2);

In diesem Beispiel wird die Sammlung zunächst nach OrderByProperty1 in aufsteigender Reihenfolge sortiert. Dann werden die Elemente mit demselben OrderByProperty1-Wert nach OrderByProperty2 in absteigender Reihenfolge sortiert.

Benutzerdefinierte Vergleicher

Für komplexere Sortieranforderungen können Sie benutzerdefinierte Vergleicher verwenden. Die Methode OrderBy erlaubt die Übergabe eines `IComparerimplementierung, wie im folgenden Beispiel gezeigt:

var customSortedCollection = collection.OrderBy(item => item.Property, new CustomComparer());
var customSortedCollection = collection.OrderBy(item => item.Property, new CustomComparer());

Hier ist der "CustomComparer" eine Klasse, die den "IComparer" implementiert` Schnittstelle, die eine benutzerdefinierte Logik für den Vergleich von Elementen bietet.

Praktisches Beispiel: Objekte sortieren

Sortieren einer Liste von Ganzzahlen

using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 5, 2, 8, 1, 7 };
        var sortedNumbers = numbers.OrderBy(num => num);
        Console.WriteLine("Sorted Numbers:");
        foreach (var number in sortedNumbers)
        {
            Console.WriteLine(number);
        }
    }
}
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 5, 2, 8, 1, 7 };
        var sortedNumbers = numbers.OrderBy(num => num);
        Console.WriteLine("Sorted Numbers:");
        foreach (var number in sortedNumbers)
        {
            Console.WriteLine(number);
        }
    }
}

In diesem Beispiel wird eine Liste ganzer Zahlen mit "OrderBy" in aufsteigender Reihenfolge sortiert.

Sortieren einer Liste von Strings

using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
    static void Main()
    {
        List<string> names = new List<string> { "Alice", "Charlie", "Bob", "David" };
        var sortedNames = names.OrderBy(name => name);
        Console.WriteLine("Sorted Names:");
        foreach (var name in sortedNames)
        {
            Console.WriteLine(name);
        }
    }
}
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
    static void Main()
    {
        List<string> names = new List<string> { "Alice", "Charlie", "Bob", "David" };
        var sortedNames = names.OrderBy(name => name);
        Console.WriteLine("Sorted Names:");
        foreach (var name in sortedNames)
        {
            Console.WriteLine(name);
        }
    }
}

Dieses Beispiel zeigt, wie eine Liste von Zeichenketten in aufsteigender Reihenfolge alphabetisch sortiert wird.

Sortieren einer Liste von benutzerdefinierten Objekten

using System;
using System.Linq;
using System.Collections.Generic;
class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}
class Program
{
    static void Main()
    {
        List<Person> people = new List<Person>
        {
            new Person { FirstName = "John", LastName = "Doe", Age = 30 },
            new Person { FirstName = "Alice", LastName = "Smith", Age = 25 },
            new Person { FirstName = "Bob", LastName = "Johnson", Age = 35 }
        };
        var sortedPeople = people.OrderBy(person => person.Age);
        Console.WriteLine("Sorted People by Age:");
        foreach (var person in sortedPeople)
        {
            Console.WriteLine($"{person.FirstName} {person.LastName}, Age: {person.Age}");
        }
    }
}
using System;
using System.Linq;
using System.Collections.Generic;
class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}
class Program
{
    static void Main()
    {
        List<Person> people = new List<Person>
        {
            new Person { FirstName = "John", LastName = "Doe", Age = 30 },
            new Person { FirstName = "Alice", LastName = "Smith", Age = 25 },
            new Person { FirstName = "Bob", LastName = "Johnson", Age = 35 }
        };
        var sortedPeople = people.OrderBy(person => person.Age);
        Console.WriteLine("Sorted People by Age:");
        foreach (var person in sortedPeople)
        {
            Console.WriteLine($"{person.FirstName} {person.LastName}, Age: {person.Age}");
        }
    }
}

In diesem Beispiel wird eine Liste von benutzerdefinierten Personenobjekten auf der Grundlage der Eigenschaft Alter in aufsteigender Reihenfolge sortiert.

Die folgende Ausgabe ist in der Konsole zu sehen

C# Orderby(Wie es für Entwickler funktioniert): Abbildung 1 - Ausgabe des vorherigen Codes, der benutzerdefinierte Objekte sortiert

Handhabung von String-Vergleichen

Wenn Sie mit Zeichenketteneigenschaften arbeiten, sollten Sie die Groß- und Kleinschreibung bei der Sortierung nicht berücksichtigen:

var sortedPeopleByName = people.OrderBy(person => person.LastName, StringComparer.OrdinalIgnoreCase);
var sortedPeopleByName = people.OrderBy(person => person.LastName, StringComparer.OrdinalIgnoreCase);

In diesem Beispiel wird die Funktion "StringComparer.OrdinalIgnoreCase" verwendet, um eine Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung auf der Grundlage der Eigenschaft "Nachname" durchzuführen.

Überlegungen zur Leistung

LINQ bietet zwar eine übersichtliche Möglichkeit zum Sortieren von Sammlungen, aber es ist wichtig, die Auswirkungen auf die Leistung zu berücksichtigen, insbesondere bei großen Datensätzen. Für leistungskritische Szenarien können Sie Alternativen wie das Sortieren an Ort und Stelle mit der Funktion List<T>.Sort-Methode.

Einführung in IronPDF

Entdecken Sie die Möglichkeiten von IronPDF innerhalb der C# PDF-Bibliothek vonIron Softwaredie beim Lesen und Erzeugen von PDF-Dokumenten hilft. Sie kann formatierte Dokumente mit Stilinformationen problemlos in PDF konvertieren. IronPDF kann PDFs aus HTML-Strings generieren oder den HTML-Code von der URL herunterladen und dann PDFs generieren.

IronPDF glänzt in den folgenden Bereichenkonvertierung von HTML in PDF, wobei alle Layouts und Stile beibehalten werden. Es kann PDFs aus verschiedenen Webinhalten generieren, wie zum Beispiel Berichte, Rechnungen und Dokumentationen. Das Werkzeug arbeitet mit HTML-Dateien, URLs und HTML-Zeichenfolgen, um PDF-Dateien zu erstellen.

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");
    }
}

Einrichtung

IronPDF kann mit dem BefehlNuGet-Paketmanager-Konsole oder mit dem Visual Studio-Paketmanager.

dotnet add package IronPdf
dotnet add package IronPdf

Sie können IronPDF auch über den NuGet Package Manager installieren, indem Sie in der Suchleiste nach "ironpdf" suchen.

C# Orderby(Wie es für Entwickler funktioniert): Abbildung 2 - Installation von IronPDF über den NuGet Package Manager

Erzeugen einer PDF-Datei mit IronPDF

Im Folgenden finden Sie den Code für die Erstellung eines PDF-Berichts mithilfe eines HTML-Strings und des IronPDF-Generators:

// See https://aka.ms/new-console-template for more information
class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}
class Program
{
    static void Main()
    {
        List<Person> people = new List<Person>
        {
            new Person { FirstName = "John", LastName = "Doe", Age = 30 },
            new Person { FirstName = "Alice", LastName = "Smith", Age = 25 },
            new Person { FirstName = "Bob", LastName = "Johnson", Age = 35 }
        };
        var sortedPeople = people.OrderBy(person => person.Age);
        string name = "Sam";
        var count = people.Count;
        string content = $@"<!DOCTYPE html>
<html>
<body>
<h1>Hello, {name}!</h1>
<p>You have {count} people sorted by Age.</p>
" +
string.Join("\n", sortedPeople.Select(person => $"{person.FirstName} {person.LastName}, Age: {person.Age}"))
+ @"
</body>
</html>";
// Create a new PDF document
        var pdfDocument = new ChromePdfRenderer();
        pdfDocument.RenderHtmlAsPdf(content).SaveAs("personByAge.pdf");
    }
}
// See https://aka.ms/new-console-template for more information
class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}
class Program
{
    static void Main()
    {
        List<Person> people = new List<Person>
        {
            new Person { FirstName = "John", LastName = "Doe", Age = 30 },
            new Person { FirstName = "Alice", LastName = "Smith", Age = 25 },
            new Person { FirstName = "Bob", LastName = "Johnson", Age = 35 }
        };
        var sortedPeople = people.OrderBy(person => person.Age);
        string name = "Sam";
        var count = people.Count;
        string content = $@"<!DOCTYPE html>
<html>
<body>
<h1>Hello, {name}!</h1>
<p>You have {count} people sorted by Age.</p>
" +
string.Join("\n", sortedPeople.Select(person => $"{person.FirstName} {person.LastName}, Age: {person.Age}"))
+ @"
</body>
</html>";
// Create a new PDF document
        var pdfDocument = new ChromePdfRenderer();
        pdfDocument.RenderHtmlAsPdf(content).SaveAs("personByAge.pdf");
    }
}

Hier erzeugen wir zunächst eine HTML-Zeichenkette aus "sortedPeople", die in aufsteigender Reihenfolge mit allen für die Berichte erforderlichen Formatierungen sortiert ist. Dann verwenden wir IronPDF, um ein PDF-Dokument zu erstellen. Wir verwenden die Methode "RenderHtmlAsPdf", um den HTML-String in ein PDF-Dokument zu konvertieren.

Ausgabe

Die folgende Ausgabe ist in der PDF-Datei verfügbar.

C# Orderby(Wie es für Entwickler funktioniert): Abbildung 3 - PDF-Ausgabe des vorherigen Codes

Lizenzierung (kostenlose Testversion verfügbar)

Ein Probeschlüssel kann angefordert werden beiIronPDF Testlizenz. Dieser Schlüssel muss in appsettings.json platziert werden.

"IronPdf.LicenseKey": "your license key"
"IronPdf.LicenseKey": "your license key"

Geben Sie Ihre E-Mail-Adresse an, um eine Testlizenz zu erhalten.

Schlussfolgerung

Die OrderBy-Methode in C# ist ein vielseitiges Werkzeug zum Sortieren von Sammlungen nach verschiedenen Kriterien. Unabhängig davon, ob Sie in aufsteigender oder absteigender Reihenfolge, nach einzelnen oder mehreren Kriterien sortieren oder benutzerdefinierte Vergleicher verwenden, kann die Beherrschung von OrderBy die Klarheit und Effizienz Ihres Codes erheblich verbessern.

Zusammen mitIronPDF-Bibliothek zur Erzeugung von PDF-Dokumentendas ist eine großartige Kombination, um eine schön formatierte und sortierte Sammlung als Dokument zu erstellen.

Jordi Bardia
Software-Ingenieur
Jordi beherrscht vor allem Python, C# und C++. Wenn er seine Fähigkeiten bei Iron Software nicht einsetzt, programmiert er Spiele. Durch seine Mitverantwortung für Produkttests, Produktentwicklung und Forschung trägt Jordi wesentlich zur kontinuierlichen Produktverbesserung bei. Die vielseitigen Erfahrungen, die er sammelt, bieten ihm immer wieder neue Herausforderungen, und er sagt, dass dies einer seiner Lieblingsaspekte bei Iron Software ist. Jordi wuchs in Miami, Florida, auf und studierte Informatik und Statistik an der University of Florida.
< PREVIOUS
C# Dev Kit VS Code Extension (Wie es für Entwickler funktioniert)
NÄCHSTES >
MSTest C# (Wie es für Entwickler funktioniert)