IRONSOFTWAREHOME
AKTUALNOŚCI DLA PROGRAMISTÓW

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

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

Language-integrated query (LINQ), potężna funkcja języka C#, umożliwia programistom tworzenie przejrzystych, wyrazistych zapytań dla różnych źródeł danych. W tym poście omówimy wykorzystanie IronPDF, wszechstronnej biblioteki C# do pracy z dokumentami PDF, przy użyciu funkcji Distinct języka LINQ. Pokażemy, w jaki sposób to połączenie może ułatwić proces tworzenia unikalnych dokumentów na podstawie zbioru danych. W tym artykułe zapoznamy się z funkcją distinct języka C# LINQ w połączeniu z IronPDF.

Jak korzystać z metody LINQ Distinct w C#

  1. Utwórz nowy projekt konsoli.
  2. Zaladuj przestrzen nazw System.Linq.
  3. Utwórz listę zawierającą wiele pozycji.
  4. Wywolaj metode Distinct() z listy.
  5. Pobierz unikalne wartości i wyświetl wynik w konsoli.
  6. Usuń wszystkie utworzone obiekty.

Czym jest LINQ

Programiści mogą tworzyć jasne i wyraziste zapytania do manipulacji danymi bezpośrednio w swoim kodzie dzięki funkcji LINQ (Language Integrated Query) języka C#. Wprowadzony po raz pierwszy w .NET Framework 3.5, LINQ oferuje standardową składnię do wysyłania zapytań do różnych źródeł danych, w tym baz danych i kolekcji. LINQ ulatwia proste zadania, takie jak filtrowanie i projekcja, dzieki operatorom, jak Where i Select, co poprawia czytelnosc kodu. Ponieważ funkcja ta pozwala na opóźnione wykonanie w celu uzyskania optymalnej szybkości, jest ona kluczowa dla programistów C#, aby zapewnić szybkie i naturalne wykonywanie operacji na danych w sposób analogiczny do SQL.

Zrozumienie LINQ Distinct

Zduplikowane elementy moga byc usuniete z kolekcji lub sekwencji przy uzyciu funkcji LINQ Distinct. W przypadku braku niestandardowego komparatora równości porównuje elementy przy użyciu ich domyślnego komparatora. To sprawia, że jest to świetna opcja w sytuacjach, gdy trzeba pracować z unikalną kolekcją i usuwać zduplikowane elementy. Technika Distinct wykorzystuje domyslnych komparatorow rownosci do oceny wartosci. Wykluczy on duplikaty, aby zwrócić tylko unikalne elementy.

Podstawowe zastosowanie

Aby uzyskac unikalne elementy, najprostszym sposobem jest uzycie metody Distinct bezposrednio na kolekcji.

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

public class DistinctExample
{
    public static void Example()
    {
        // Example list with duplicate integers
        List<int> numbers = new List<int> { 1, 2, 2, 3, 4, 4, 5 };

        // Using Distinct to remove duplicates
        var distinctNumbers = numbers.Distinct();

        // Display the distinct numbers
        foreach (var number in distinctNumbers)
        {
            Console.WriteLine(number);
        }
    }
}

Niestandardowy komparator równości

Mozesz zdefiniowac niestandardowe porownanie rownosci, uzywajac przeciazenia funkcji Distinct. Jest to pomocne, jeśli chcesz porównać elementy według określonych standardów. Proszę zapoznać się z poniższym przykładem:

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

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class PersonEqualityComparer : IEqualityComparer<Person>
{
    public bool Equals(Person x, Person y)
    {
        return x.FirstName == y.FirstName && x.LastName == y.LastName;
    }

    public int GetHashCode(Person obj)
    {
        return obj.FirstName.GetHashCode() ^ obj.LastName.GetHashCode();
    }
}

public class DistinctCustomComparerExample
{
    public static void Example()
    {
        // Example list of people
        List<Person> people = new List<Person>
        {
            new Person { FirstName = "John", LastName = "Doe" },
            new Person { FirstName = "Jane", LastName = "Doe" },
            new Person { FirstName = "John", LastName = "Doe" }
        };

        // Using Distinct with a custom equality comparer
        var distinctPeople = people.Distinct(new PersonEqualityComparer());

        // Display distinct people
        foreach (var person in distinctPeople)
        {
            Console.WriteLine($"{person.FirstName} {person.LastName}");
        }
    }
}

Używanie Distinct z typami wartości

Nie musisz dostarczac niestandardowego porownania rownosci, gdy uzywasz metody Distinct z typami wartosciowymi.

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

public class DistinctValueTypeExample
{
    public static void Example()
    {
        List<int> integers = new List<int> { 1, 2, 2, 3, 4, 4, 5 };

        // Using Distinct to remove duplicates
        var distinctIntegers = integers.Distinct();

        // Display distinct integers
        foreach (var integer in distinctIntegers)
        {
            Console.WriteLine(integer);
        }
    }
}

Używanie Distinct z typami anonimowymi

Distinct moze byc uzywany z typami anonimowymi do usuwania duplikatow na podstawie okreslonych atrybutow. Proszę zapoznać się z poniższym przykładem:

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

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class DistinctAnonymousTypesExample
{
    public static void Example()
    {
        List<Person> people = new List<Person>
        {
            new Person { FirstName = "John", LastName = "Doe" },
            new Person { FirstName = "Jane", LastName = "Doe" },
            new Person { FirstName = "John", LastName = "Doe" }
        };

        // Using Distinct with anonymous types
        var distinctPeople = people
            .Select(p => new { p.FirstName, p.LastName })
            .Distinct();

        // Display distinct anonymous types
        foreach (var person in distinctPeople)
        {
            Console.WriteLine($"{person.FirstName} {person.LastName}");
        }
    }
}

Wyróżnia się określoną właściwością

Pracujac z obiektami, mozesz stworzyc wlasna logike rozrozniania po okreslonym atrybucie, lub mozesz skorzystac z metody rozszerzajacej DistinctBy z bibliotek zewnetrznych (np. MoreLINQ).

// Ensure to include the MoreLINQ Library
using MoreLinq;
using System;
using System.Collections.Generic;
using System.Linq;

public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class DistinctByExample
{
    public static void Example()
    {
        List<Person> people = new List<Person>
        {
            new Person { Id = 1, FirstName = "John", LastName = "Doe" },
            new Person { Id = 2, FirstName = "Jane", LastName = "Doe" },
            new Person { Id = 1, FirstName = "John", LastName = "Doe" }
        };

        // Using DistinctBy to filter distinct people by Id
        var distinctPeople = people.DistinctBy(p => p.Id);

        // Display distinct people
        foreach (var person in distinctPeople)
        {
            Console.WriteLine($"{person.Id}: {person.FirstName} {person.LastName}");
        }
    }
}

IronPDF

Programiści mogą tworzyć, edytować i modyfikować dokumenty PDF przy użyciu języka C# z pomocą biblioteki .NET IronPDF Website. Program oferuje szereg narzędzi i funkcji umożliwiających wykonywanie różnych zadań związanych z plikami PDF, takich jak generowanie plików PDF z HTML, konwersja HTML do PDF, łączenie lub dzielenie dokumentów PDF oraz dodawanie tekstu, obrazów i adnotacji do już istniejących plików PDF. Aby dowiedzieć się więcej o IronPDF, zapoznaj się z dokumentacją IronPDF.

Główną funkcją IronPDF jest konwersja HTML do PDF, która zachowuje układ i style dokumentu. Możesz generować pliki PDF z treści internetowych, idealne do raportów, faktur i dokumentacji. Obsługuje konwersję plików HTML, adresów URL i ciągów znaków HTML do 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");
    }
}

Funkcje IronPDF

  • Konwersja HTML do PDF: Możesz użyć IronPDF do konwersji dowolnego rodzaju danych HTML — w tym plików, adresów URL i ciągów kodu HTML — na dokumenty PDF.
  • Generowanie plików PDF: Tekst, obrazy i inne elementy można programowo dodawać do dokumentów PDF przy użyciu języka programowania C#.
  • Manipulacja plikami PDF: IronPDF może dzielić plik PDF na wiele plików, łączyć kilka dokumentów PDF w jeden plik oraz edytować istniejące pliki PDF.
  • Formularze PDF: Biblioteka umożliwia użytkownikom tworzenie i wypełnianie formularzy PDF, co sprawia, że jest przydatna w sytuacjach, w których konieczne jest gromadzenie i przetwarzanie danych z formularzy.
  • Funkcje bezpieczeństwa: IronPDF może służyć do szyfrowania dokumentów PDF oraz zapewniania ochrony hasłem i uprawnieniami.
  • Wyodrębnianie tekstu: Tekst z plików PDF można wyodrębnić za pomocą IronPDF.

Zainstaluj IronPDF

Pobierz bibliotekę IronPDF; jest to niezbędne do skonfigurowania projektu. Aby to zrobić, wprowadź następujący kod do konsoli menedżera pakietów NuGet:

PM > Install-Package IronPdf

C# LINQ Distinct (How It Works For Developers): Figure 1 - To install the IronPDF library using the NuGet Package Manager Console, enter the following command: "Install IronPDF" or ".NET add package IronPDF"

Dodatkową opcją jest użycie menedżera pakietów NuGet do wyszukania pakietu "IronPDF". Z listy wszystkich pakietów NuGet powiązanych z IronPDF możemy wybrać i pobrać potrzebny pakiet.

C# LINQ Distinct (How It Works For Developers): Figure 2 - To install the IronPDF library using the NuGet Package Manager, search for the package "IronPDF" in the Browse tab and choose the latest version of IronPDF package to download and install in your project.

LINQ z IronPDF

Rozważmy sytuację, w której dysponujemy zbiorem danych i chcemy utworzyć różne dokumenty PDF zgodnie z różnymi wartościami w tym zbiorze. Tutaj swietnie sprawdza sie przydatnosc Distinct w LINQ, szczegolnie gdy jest uzywane z IronPDF do szybkiego tworzenia dokumentow.

Generowanie odrębnych plików PDF za pomocą LINQ i IronPDF

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

public class DocumentGenerator
{
    public static void Main()
    {
        // Sample data representing categories
        List<string> categories = new List<string>
        {
            "Technology",
            "Business",
            "Health",
            "Technology",
            "Science",
            "Business",
            "Health"
        };

        // Use LINQ Distinct to filter out duplicate values
        var distinctCategories = categories.Distinct();

        // Generate a distinct elements PDF document for each category
        foreach (var category in distinctCategories)
        {
            GeneratePdfDocument(category);
        }
    }
    
    private static void GeneratePdfDocument(string category)
    {
        // Create a new PDF document using IronPDF
        IronPdf.HtmlToPdf renderer = new IronPdf.HtmlToPdf();
        PdfDocument pdf = renderer.RenderHtmlAsPdf($"<h1>{category} Report</h1>");
        
        // Save the PDF to a file
        string pdfFilePath = $"{category}_Report.pdf";
        pdf.SaveAs(pdfFilePath);
        
        // Display a message with the file path
        Console.WriteLine($"PDF generated successfully. File saved at: {pdfFilePath}");
    }
}

W tym przykladzie, szereg unikalnych kategorii zostaje uzyskanych za pomoca metody Distinct dla kolekcji kategorii. Pomaga to usunąć z sekwencji powtarzające się elementy. Następnie za pomocą IronPDF tworzy się dokument PDF zawierający te unikalne elementy. Ta metoda gwarantuje, że oddzielne dokumenty PDF są tworzone wyłącznie dla unikalnych kategorii.

Wynik na konsoli

C# LINQ Distinct (Jak to Dziala dla Deweloperow): Rysunek 3 - Wynik konsoli

Wygenerowany plik PDF

C# LINQ Distinct (Jak to Dziala dla Deweloperow): Rysunek 4 - Wynik PDF: Raport technologiczny

Aby dowiedzieć się więcej o przykładowym kodzie IronPDF służącym do generowania plików PDF przy użyciu HTML, zapoznaj się z przykładowym kodem IronPDF HTML do PDF.

Wnioski

Metoda rozszerzajaca Distinct w LINQ w polaczeniu z IronPDF oferuje solidny i wydajny mechanizm do tworzenia unikalnych dokumentow PDF na bazie wartosci. Ta metoda usprawnia kod i gwarantuje efektywne tworzenie dokumentów, niezależnie od tego, czy pracujesz z kategoriami, tagami czy innymi danymi, które wymagają oddzielnych dokumentów.

Wykorzystując LINQ do przetwarzania danych oraz IronPDF do tworzenia dokumentów, można opracować niezawodne i elastyczne rozwiązanie do zarządzania różnymi aspektami aplikacji napisanych w języku C#. Korzystając z tych strategii w swoich projektach, należy pamiętać o szczególnych potrzebach aplikacji i dostosować wdrożenie tak, aby osiągnąć maksymalną niezawodność i wydajność.

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