IRONSOFTWAREHOME
AKTUALNOŚCI DLA PROGRAMISTÓW

C# Orderby (jak to działa dla programistów)

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Jacob Mellor
Updated: 21 kwietnia 2026

Sortowanie jest podstawową operacją w każdym języku programowania, a metoda OrderBy w języku C# jest potężnym narzędziem do porządkowania elementów w kolekcjach. Niezależnie od tego, czy pracujesz z tablicami, listami czy innymi strukturami, które można wyliczać, zrozumienie, jak wykorzystać OrderBy, może znacznie poprawić czytelność i funkcjonalność Twojego kodu.

W dalszej części tego artykułu przedstawimy bibliotekę IronPDF firmy Iron Software oraz sposób, w jaki można wykorzystać metodę LINQ OrderBy i IronPDF do generowania sformatowanych i posortowanych plików PDF.

Czym jest metoda LINQ OrderBy?

Metoda OrderBy jest częścią biblioteki LINQ (Language-Integrated Query) w C# i jest specjalnie zaprojektowana do sortowania elementów w porządku rosnącym; Ponieważ jest to domyślny sposób sortowania danych, nie ma potrzeby stosowania słowa kluczowego "rosnąco".

Jak korzystać z metody LINQ OrderBy

Sortowanie danych w porządku rosnącym

W języku C# istnieją dwa sposoby zastosowania tej metody: poprzez składnię metody lub składnię zapytania. Użyjemy składni metody, ponieważ jest ona prosta:

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

Tutaj, collection to kolekcja źródłowa IEnumerable którą chcesz posortować, a OrderByProperty to właściwość lub wyrażenie, według którego chcesz uporządkować elementy. Wyrażenie lambda wewnątrz OrderBy określa kryterium sortowania.

Sortowanie danych w porządku malejącym

Aby sortować w porządku malejącym, można użyć metody OrderByDescending korzystając z podejścia opartego na metodach:

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

Sortowanie danych według wielu kryteriów

W rzeczywistych sytuacjach często trzeba sortować zbiór danych na podstawie wielu kryteriów. OrderBy umożliwia to przez łączenie wielu wywołań ThenBy lub ThenByDescending:

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

W tym przykładzie kolekcja jest najpierw sortowana według OrderByProperty1 w porządku rosnącym. Następnie, dla elementów o tej samej wartości OrderByProperty1 jest sortowana według OrderByProperty2 w porządku malejącym.

Niestandardowe komparatory

W przypadku bardziej złożonych wymagań dotyczących sortowania można użyć niestandardowych komparatorów. Metoda OrderBy pozwala na przekazanie implementacji IComparer<t>, jak pokazano w poniższym przykładzie:

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

Tutaj, CustomComparer jest klasą implementującą interfejs IComparer<t>, zapewniającą niestandardową logikę porównywania elementów.

Praktyczny przykład: sortowanie obiektów

Sortowanie listy liczb całkowitych

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

W tym przykładzie lista liczb całkowitych jest sortowana w porządku rosnącym używając OrderBy.

Sortowanie listy ciągów znaków

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

Ten przykład pokazuje sortowanie listy ciągów znaków w porządku alfabetycznym rosnącym.

Sortowanie listy obiektów niestandardowych

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

W tym przykładzie lista niestandardowych obiektów Person jest sortowana na podstawie właściwości Age w porządku rosnącym.

W konsoli widoczny jest następujący wynik:

C# Orderby (jak to działa dla deweloperów): Rysunek 1 - Wynik poprzedniego sortowania kodu niestandardowych obiektów

Obsługa porównań ciągów znaków

W przypadku właściwości ciągów znaków warto zapewnić sortowanie bez uwzględniania wielkości liter:

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

Ten przykład używa StringComparer.OrdinalIgnoreCase do wykonania sortowania nie rozróżniającego wielkości liter na podstawie właściwości LastName.

Kwestie związane z wydajnością

Chociaż LINQ zapewnia zwięzły sposób sortowania kolekcji, należy koniecznie wziąć pod uwagę wpływ na wydajność, zwłaszcza w przypadku dużych zbiorów danych. Dla scenariuszy wymagających wysokiej wydajności, warto rozważyć alternatywy takie jak sortowanie w miejscu używając metody List<t>.Sort.

Przedstawiamy IronPDF

Odkryj możliwości IronPDF w bibliotece C# PDF firmy Iron Software, która pomaga odczytywać i generować dokumenty PDF. Może z łatwością konwertować sformatowane dokumenty zawierające informacje o stylach do formatu PDF. IronPDF może generować pliki PDF na podstawie ciągów znaków HTML lub pobierać kod HTML z adresu URL, a następnie generować pliki PDF.

IronPDF wyróżnia się w zakresie konwersji HTML do PDF, zachowując wszystkie układy i style. Może generować pliki PDF z różnych treści internetowych, takich jak raporty, faktury i dokumentacja. Narzędzie obsługuje pliki HTML, adresy URL i ciągi znaków HTML w celu tworzenia plików 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");
    }
}

Instalacja

IronPDF można zainstalować za pomocą konsoli menedżera pakietów NuGet lub menedżera pakietów Visual Studio.

PM > Install-Package IronPdf

Możesz również zainstalować IronPDF za pomocą Menedżera Pakietów NuGet, wyszukując "IronPDF" w pasku wyszukiwania.

C# Orderby (jak to działa dla deweloperów): Rysunek 2 - Instalacja IronPDF poprzez Menedżera Pakietów NuGet

Generowanie pliku PDF za pomocą IronPDF

Poniżej znajduje się kod służący do generowania raportu PDF przy użyciu ciągu znaków HTML i generatora IronPDF:

// See https://aka.ms/new-console-template for more information

using IronPdf;
using System;
using System.Collections.Generic;
using System.Linq;

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 }
        };
        
        // Sort people by age
        var sortedPeople = people.OrderBy(person => person.Age);
        
        string name = "Sam";
        var count = people.Count;
        
        // Generate an HTML string
        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 and save it
        var pdfDocument = new ChromePdfRenderer();
        pdfDocument.RenderHtmlAsPdf(content).SaveAs("personByAge.pdf");
    }
}

Tutaj najpierw generujemy łańcuch HTML z sortedPeople który jest sortowany w porządku rosnącym ze wszystkimi wymaganymi formatowaniami do raportów. Następnie używamy IronPDF do wygenerowania dokumentu PDF. Używamy metody RenderHtmlAsPdf do konwersji łańcucha HTML na dokument PDF.

Wynik

W pliku PDF dostępny jest następujący wynik:

C# Orderby (jak to działa dla deweloperów): Rysunek 3 - Wyjściowy PDF z poprzedniego kodu

Licencjonowanie (dostępna bezpłatna wersja próbna)

Klucz próbny można uzyskać na stronie Licencji Trial IronPDF. Ten klucz należy umieścić w pliku appsettings.json.

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

Podaj swój adres e-mail, aby otrzymać Licencję Trial.

Wnioski

Metoda OrderBy w języku C# jest wszechstronnym narzędziem do sortowania kolekcji na podstawie różnych kryteriów. Niezależnie od tego, czy sortujesz w porządku rosnącym czy malejącym, według jednego lub wielu kryteriów, czy też używasz niestandardowych komparatorów, opanowanie funkcji OrderBy może znacznie poprawić przejrzystość i wydajność Twojego kodu.

W połączeniu z biblioteką IronPDF do generowania dokumentów PDF stanowi to doskonałe rozwiązanie do tworzenia pięknie sformatowanych i uporządkowanych zbiorów w postaci dokumentów.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczącą ponad 50 osób, obsługującą NASA, Teslę i światowe agencje rządowe.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta