AYUDA .NET

C# LINQ Distinct (Cómo funciona para desarrolladores)

Actualizado 18 de febrero, 2024
Compartir:

Introducción

Consulta integrada en el idioma (LINQ), una potente función del lenguaje C#, permite a los programadores crear búsquedas claras y expresivas para una gran variedad de fuentes de datos. En este artículo se analiza el uso de IronPDF una biblioteca C# flexible para trabajar con documentos PDF, utilizando LINQ se distingue función. Mostraremos cómo esta combinación puede facilitar el proceso de creación de documentos únicos a partir de una colección. En este artículo, vamos a aprender sobre la función C# LINQ distinct con IronPDF.

Cómo utilizar C# método LINQ distinct

  1. Crea un nuevo proyecto de consola.
  2. Importar el espacio de nombres System.Linq.
  3. Crear una lista con varios elementos.
  4. Llamar al método Distinto() de la Lista.
  5. Obtener los valores únicos y mostrar el resultado en la consola.
  6. Elimina todos los objetos creados.

Qué es LINQ

Los desarrolladores pueden crear consultas claras y expresivas para la manipulación de datos directamente en su código con LINQ de C#. (Idioma Consulta integrada) característica. LINQ, que se incluyó por primera vez en .NET Framework 3.5, ofrece una sintaxis estándar para consultar diversas fuentes de datos, como bases de datos y colecciones. LINQ facilita tareas sencillas como el filtrado y la proyección mediante operadores como Where y Select, lo que mejora la legibilidad del código. Dado que permite posponer la ejecución para conseguir una velocidad óptima, esta función es crucial para que los desarrolladores de C# se aseguren de que las operaciones de manipulación de datos se completan con rapidez y naturalidad de forma análoga a SQL.

Entender LINQ Distinct

Los elementos duplicados pueden eliminarse de una colección o secuencia utilizando la función Distinct de LINQ. En ausencia de un comparador de igualdad personalizado, compara los elementos utilizando su comparador por defecto. Esto lo convierte en una gran opción en situaciones en las que se necesita trabajar con una colección única y eliminar componentes duplicados. La técnica Distinct utiliza la comparación de igualdad por defecto para evaluar valores. Devolverá false para la propiedad particular que esté duplicada basándose en que mostrará elementos únicos.

Uso básico

Para obtener elementos distintos, lo más sencillo es utilizar el método Distinct directamente sobre una colección.

var distinctNumbers = numbers.Distinct();
var distinctNumbers = numbers.Distinct();
Dim distinctNumbers = numbers.Distinct()
VB   C#

Comparador de igualdad personalizado

Puede definir una comparación de igualdad personalizada utilizando una sobrecarga de la función Distinct. Esto es útil si desea comparar artículos según normas concretas. Consulte el siguiente ejemplo:

var distinctPeople = people.Distinct(new PersonEqualityComparer());
var distinctPeople = people.Distinct(new PersonEqualityComparer());
Dim distinctPeople = people.Distinct(New PersonEqualityComparer())
VB   C#

Utilización de Distinct con tipos de valor

No es necesario proporcionar una comparación de igualdad personalizada cuando se utiliza el método Distinct con tipos de valor.

var distinctIntegers = integers.Distinct();
var distinctIntegers = integers.Distinct();
Dim distinctIntegers = integers.Distinct()
VB   C#

Uso de Distinct con tipos anónimos

Distinct puede utilizarse con tipos anónimos para eliminar duplicados basándose en atributos concretos. Consulte el siguiente ejemplo:

var distinctPeople = people
    .Select(p => new { p.FirstName, p.LastName })
    .Distinct();
var distinctPeople = people
    .Select(p => new { p.FirstName, p.LastName })
    .Distinct();
Dim distinctPeople = people.Select(Function(p) New With {
	Key p.FirstName,
	Key p.LastName
}).Distinct()
VB   C#

Distinto por una propiedad específica

Cuando trabaje con objetos, puede crear su propia lógica para distinguir por un atributo determinado, o puede utilizar el método de extensión DistinctBy de bibliotecas de terceros (como Más LINQ).

var distinctPeople = people.DistinctBy(p => p.Id);
var distinctPeople = people.DistinctBy(p => p.Id);
Dim distinctPeople = people.DistinctBy(Function(p) p.Id)
VB   C#

IronPDF

Los programadores pueden crear, editar y modificar documentos PDF utilizando el lenguaje C# con ayuda de la biblioteca .NET IronPDF. El programa ofrece una serie de herramientas y funcionalidades que permiten realizar diversas tareas relacionadas con archivos PDF, como generar PDF a partir de HTML, convertir HTML a PDF, fusionar o dividir documentos PDF y añadir texto, imágenes y anotaciones a PDF ya existentes. Para saber más sobre IronPDF, consulte su página de documentación.

Características de IronPDF

  • Convertir HTML a PDF: Puede utilizar IronPDF para convertir cualquier tipo de datos HTML -incluidos archivos, URL y cadenas de código HTML- en documentos PDF.
  • Generación de PDF: El texto, las imágenes y otros elementos pueden añadirse mediante programación a los documentos PDF utilizando el lenguaje de programación C#.
  • Manipulación de PDF: IronPDF puede dividir un archivo PDF en muchos archivos, fusionar varios documentos PDF en un solo archivo y editar PDF ya existentes.
  • Formularios PDF: Dado que la biblioteca permite a los usuarios crear y rellenar formularios PDF, resulta útil en situaciones en las que es necesario recopilar y procesar datos de formularios.
  • Funciones de seguridad: IronPDF puede utilizarse para cifrar documentos PDF y proporcionar protección mediante contraseña y permisos.
  • Extracción de texto: El texto de los archivos PDF puede extraerse con IronPDF.

Instalar IronPDF

Obtenga la biblioteca IronPDF; es necesario para el futuro parche. Para ello, introduzca el siguiente código en la consola del gestor de paquetes NuGet:

Install-Package IronPdf

C# LINQ Distinct (Cómo funciona para los desarrolladores): Figura 1 - Para instalar la biblioteca IronPDF utilizando la consola del gestor de paquetes NuGet, introduzca el siguiente comando: "Install IronPDF" o "dotnet add package IronPdf"

Otra opción es utilizar el gestor de paquetes NuGet para buscar el paquete "IronPDF". Podemos elegir y descargar el paquete necesario de esta lista de todos los paquetes NuGet asociados con IronPDF.

C# LINQ Distinct (Cómo funciona para los desarrolladores): Figura 2 - Para instalar la librería IronPDF utilizando el Gestor de Paquetes NuGet, busque el paquete "ironpdf" en la pestaña Examinar y elija la última versión del paquete IronPDF para descargar e instalar en su proyecto.

LINQ con IronPDF

Considere una situación en la que dispone de un conjunto de datos y desea crear varios documentos PDF en función de los distintos valores de dicho conjunto. Aquí es donde brilla la utilidad de Distinct de LINQ, sobre todo cuando se utiliza con IronPDF para crear documentos rápidamente.

Generación de PDF distintos con LINQ e IronPDF

using IronPdf;
using System;
using System.Collections.Generic;
using System.Linq;
public class DocumentGenerator
{
    public string result {get;set;}
    public int id {get;set;}
    public static void Main()
    {
        //  Muestra de datos que representan categorías
        List<string> categories = new List<string>
        {
            "Technology",
            "Business",
            "Health",
            "Technology",
            "Science",
            "Business",
            "Health"
        };
        //  Utilice LINQ Distinct para filtrar los valores duplicados
        //  sintaxis de consulta distintiva
        var distinctCategories = categories.Distinct();
        //  Generar un documento PDF con elementos distintos para cada categoría
        foreach (var category in distinctCategories)
        {
            GeneratePdfDocument(category);
        }
    }
    private static void GeneratePdfDocument(string category)
    {
        //  Crear un nuevo documento PDF con IronPDF
        IronPdf.HtmlToPdf renderer = new IronPdf.HtmlToPdf();
        PdfDocument pdf = renderer.RenderHtmlAsPdf($"<h1>{category} Report</h1>");
        //  Guardar el PDF en un archivo
        string pdfFilePath = $"{category}_Report.pdf";
        pdf.SaveAs(pdfFilePath);
        //  Mostrar un mensaje con la ruta del archivo
        Console.WriteLine($"PDF generated successfully. File saved at: {pdfFilePath}");
    }
}
using IronPdf;
using System;
using System.Collections.Generic;
using System.Linq;
public class DocumentGenerator
{
    public string result {get;set;}
    public int id {get;set;}
    public static void Main()
    {
        //  Muestra de datos que representan categorías
        List<string> categories = new List<string>
        {
            "Technology",
            "Business",
            "Health",
            "Technology",
            "Science",
            "Business",
            "Health"
        };
        //  Utilice LINQ Distinct para filtrar los valores duplicados
        //  sintaxis de consulta distintiva
        var distinctCategories = categories.Distinct();
        //  Generar un documento PDF con elementos distintos para cada categoría
        foreach (var category in distinctCategories)
        {
            GeneratePdfDocument(category);
        }
    }
    private static void GeneratePdfDocument(string category)
    {
        //  Crear un nuevo documento PDF con IronPDF
        IronPdf.HtmlToPdf renderer = new IronPdf.HtmlToPdf();
        PdfDocument pdf = renderer.RenderHtmlAsPdf($"<h1>{category} Report</h1>");
        //  Guardar el PDF en un archivo
        string pdfFilePath = $"{category}_Report.pdf";
        pdf.SaveAs(pdfFilePath);
        //  Mostrar un mensaje con la ruta del archivo
        Console.WriteLine($"PDF generated successfully. File saved at: {pdfFilePath}");
    }
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Imports System.Linq
Public Class DocumentGenerator
	Public Property result() As String
	Public Property id() As Integer
	Public Shared Sub Main()
		'  Muestra de datos que representan categorías
		Dim categories As New List(Of String) From {"Technology", "Business", "Health", "Technology", "Science", "Business", "Health"}
		'  Utilice LINQ Distinct para filtrar los valores duplicados
		'  sintaxis de consulta distintiva
		Dim distinctCategories = categories.Distinct()
		'  Generar un documento PDF con elementos distintos para cada categoría
		For Each category In distinctCategories
			GeneratePdfDocument(category)
		Next category
	End Sub
	Private Shared Sub GeneratePdfDocument(ByVal category As String)
		'  Crear un nuevo documento PDF con IronPDF
		Dim renderer As New IronPdf.HtmlToPdf()
		Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf($"<h1>{category} Report</h1>")
		'  Guardar el PDF en un archivo
		Dim pdfFilePath As String = $"{category}_Report.pdf"
		pdf.SaveAs(pdfFilePath)
		'  Mostrar un mensaje con la ruta del archivo
		Console.WriteLine($"PDF generated successfully. File saved at: {pdfFilePath}")
	End Sub
End Class
VB   C#

En este ejemplo, se obtiene una serie de categorías distintas utilizando el método Distinct para la colección de categorías. Nos ayudará a eliminar elementos duplicados de una secuencia. A continuación, se utiliza IronPDF para crear un documento PDF con elementos únicos. Este método garantiza que se produzcan documentos PDF separados únicamente para categorías únicas.

Salida de la consola

C# LINQ Distinct (Cómo funciona para los desarrolladores): Figura 3 - Salida de la consola

PDF generado

C# LINQ Distinct (Cómo funciona para los desarrolladores): Figura 4 - Salida PDF: Informe tecnológico

Para saber más sobre el ejemplo de código de IronPDF para generar PDF utilizando HTML, consulte aquí.

Conclusión

El método de extensión Distinct de LINQ junto con IronPDF ofrece un mecanismo sólido y eficaz para crear documentos PDF únicos basados en valores. Este método agiliza el código y garantiza la producción eficaz de documentos, tanto si trabaja con categorías, etiquetas o cualquier otro dato que requiera documentos independientes.

Puede desarrollar una solución fiable y expresiva para gestionar diferentes aspectos de sus aplicaciones C# utilizando LINQ para el procesamiento de datos e IronPDF para la producción de documentos. Cuando utilice estas estrategias en sus proyectos, tenga en cuenta las necesidades particulares de su aplicación y ajuste la implementación para lograr la máxima fiabilidad y rendimiento.

< ANTERIOR
C# Internal (Cómo funciona para los desarrolladores)
SIGUIENTE >
Cola de prioridades en C# (Cómo funciona para desarrolladores)

¿Listo para empezar? Versión: 2024.7 recién publicada

Descarga gratuita de NuGet Descargas totales: 9,974,197 Ver licencias >
123