IRONSOFTWAREHOME
ATUALIZAÇÕES DO DESENVOLVEDOR

C# LINQ Distinct (Como funciona para desenvolvedores)

Curtis Chau
Curtis Chau
Updated: 21 de abril de 2026

A consulta integrada à linguagem (LINQ), um recurso poderoso da linguagem C#, permite que os programadores criem consultas claras e expressivas para uma variedade de fontes de dados. Este artigo abordará o uso do IronPDF , uma biblioteca C# versátil para trabalhar com documentos PDF, utilizando a função Distinct do LINQ . Mostraremos como essa combinação pode facilitar o processo de criação de documentos únicos a partir de uma coleção. Neste artigo, vamos aprender sobre a função distinct do LINQ em C# com o IronPDF.

Como Usar o Método Distinct do C# LINQ

  1. Crie um novo projeto de console.
  2. Importe o namespace System.Linq.
  3. Crie uma lista com vários itens.
  4. Chame o método Distinct() da Lista.
  5. Obtenha os valores únicos e exiba o resultado no console.
  6. Elimine todos os objetos criados.

O que é LINQ?

Com o recurso LINQ (Language Integrated Query) do C#, os desenvolvedores podem criar consultas claras e expressivas para manipulação de dados diretamente em seu código. Incluído inicialmente no .NET Framework 3.5, o LINQ oferece uma sintaxe padrão para consultar uma variedade de fontes de dados, incluindo bancos de dados e coleções. LINQ torna tarefas simples como filtragem e projeção mais fáceis usando operadores como Where e Select, o que melhora a legibilidade do código. Por permitir a execução atrasada para otimizar a velocidade, esse recurso é crucial para desenvolvedores C# garantirem que as operações de manipulação de dados sejam concluídas de forma rápida e natural, de maneira análoga ao SQL.

Entendendo o LINQ Distinct

Elementos duplicados podem ser removidos de uma coleção ou sequência usando a função Distinct do LINQ. Na ausência de um comparador de igualdade personalizado, ele compara os itens usando o comparador padrão. Isso a torna uma ótima opção em situações em que você precisa trabalhar com uma coleção única e remover componentes duplicados. A técnica Distinct usa os comparadores de igualdade padrão para avaliar valores. Isso excluirá duplicados para retornar apenas elementos únicos.

Uso básico

Para obter itens distintos, a maneira mais simples de usá-lo é utilizar o método Distinct diretamente em uma coleção.

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

Comparador de igualdade personalizado

Você pode definir uma comparação de igualdade personalizada utilizando uma sobrecarga da função Distinct. Isso é útil se você deseja comparar itens de acordo com padrões específicos. Consulte o exemplo a seguir:

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

Utilizando o operador DISTINCT com tipos de valor

Você não precisa fornecer uma comparação de igualdade personalizada ao usar o método Distinct com tipos de valor.

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

Utilizando o atributo Distinct com tipos anônimos

Distinct pode ser usado com tipos anônimos para remover duplicatas com base em atributos específicos. Consulte o exemplo a seguir:

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

Distintivo por uma propriedade específica

Ao trabalhar com objetos, você pode criar sua própria lógica para diferenciar por um determinado atributo, ou pode utilizar o método de extensão DistinctBy de bibliotecas de terceiros (como 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

Os programadores podem criar, editar e alterar documentos PDF usando a linguagem C# com o auxílio da biblioteca .NET IronPDF Website . O programa oferece uma variedade de ferramentas e funcionalidades para permitir diversas tarefas envolvendo arquivos PDF, como gerar PDFs a partir de HTML, converter HTML para PDF, mesclar ou dividir documentos PDF e adicionar texto, imagens e anotações a PDFs já existentes. Para saber mais sobre o IronPDF, consulte a documentação do IronPDF .

A principal funcionalidade do IronPDF é a conversão de HTML para PDF , que mantém seus layouts e estilos intactos. Você pode gerar PDFs a partir de conteúdo da web, perfeitos para relatórios, faturas e documentação. Ele permite a conversão de arquivos HTML, URLs e strings HTML em arquivos 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");
    }
}

Funcionalidades do IronPDF

  • Converter HTML para PDF: Você pode usar o IronPDF para converter qualquer tipo de dado HTML — incluindo arquivos, URLs e sequências de código HTML — em documentos PDF.
  • Geração de PDF: Texto, imagens e outros elementos podem ser adicionados programaticamente a documentos PDF usando a linguagem de programação C#.
  • Manipulação de PDF: O IronPDF pode dividir um arquivo PDF em vários arquivos, mesclar diversos documentos PDF em um único arquivo e editar PDFs já existentes.
  • Formulários em PDF: A biblioteca permite que os usuários criem e preencham formulários em PDF, sendo útil em cenários onde é necessário coletar e processar dados de formulários.
  • Recursos de segurança: O IronPDF pode ser usado para criptografar documentos PDF e fornecer proteção por senha e permissões.
  • Extração de texto: O texto de arquivos PDF pode ser extraído usando o IronPDF.

Instale o IronPDF

Obtenha a biblioteca IronPDF ; É necessário para configurar seu projeto. Insira o seguinte código no Console do Gerenciador de Pacotes NuGet para realizar esta tarefa:

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"

Utilizar o Gerenciador de Pacotes NuGet para procurar o pacote "IronPDF" é uma opção adicional. Podemos escolher e baixar o pacote necessário dessa lista dentre todos os pacotes NuGet associados ao IronPDF.

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 com IronPDF

Considere uma situação em que você possui um conjunto de dados e deseja criar vários documentos PDF de acordo com os diferentes valores presentes nesse conjunto. É aqui que a utilidade do Distinct do LINQ brilha, especialmente quando usado com IronPDF para criar documentos rapidamente.

Gerando PDFs distintos com LINQ e 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}");
    }
}

Neste exemplo, uma série de categorias distintas é obtida usando o método Distinct para a coleção de categorias. Isso ajuda a remover elementos duplicados de uma sequência. Em seguida, o IronPDF é usado para criar um documento PDF com esses elementos exclusivos. Este método garante que documentos PDF separados sejam produzidos exclusivamente para categorias únicas.

Saída do console

C# LINQ Distinct (Como Funciona Para Desenvolvedores): Figura 3 - Saída do Console

Saída em PDF gerada

C# LINQ Distinct (Como Funciona Para Desenvolvedores): Figura 4 - Saída em PDF: Relatório de Tecnologia

Para saber mais sobre o exemplo de código IronPDF para gerar PDFs usando HTML, consulte o exemplo de código IronPDF HTML para PDF .

Conclusão

O método de extensão Distinct do LINQ em conjunto com o IronPDF oferece um mecanismo robusto e eficiente para criar documentos PDF exclusivos com base em valores. Este método simplifica o código e garante a produção eficaz de documentos, quer esteja a trabalhar com categorias, etiquetas ou quaisquer outros dados que exijam documentos separados.

Você pode desenvolver uma solução confiável e expressiva para gerenciar diferentes aspectos de seus aplicativos C# utilizando LINQ para processamento de dados e IronPDF para geração de documentos. Ao utilizar essas estratégias em seus projetos, leve em consideração as necessidades específicas da sua aplicação e ajuste a implementação para obter o máximo de confiabilidade e desempenho.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.