AIDE .NET

C# Enumerable (Comment cela fonctionne pour les développeurs)

Publié janvier 14, 2025
Partager:

Introduction

IEnumerable de C#L'interface est l'un des outils les plus polyvalents du framework .NET, permettant aux développeurs de travailler avec des collections de manière très flexible. Lorsqu'il est combiné avecIronPDFIEnumerable permet une manipulation dynamique des données et une génération efficace de PDF, ce qui le rend idéal pour des scénarios tels que la création de rapports, l'exportation de données ou la génération de documents à partir de requêtes de base de données.

L'utilisation d'IEnumerable garantit que votre application reste évolutive et efficace en termes de mémoire, car elle traite les données de manière paresseuse et évite de charger des ensembles de données complets en mémoire en une seule fois. Ceci est particulièrement utile pour les applications à grande échelle traitant de vastes collections de données, telles qu'une table de base de données massive.

Qu'est-ce qu'IronPDF ?

C# Enumerable(Comment cela fonctionne pour les développeurs) : Figure 1

IronPDF est une bibliothèque .NET puissante conçue pour simplifier le processus de création, d'édition et de gestion des fichiers PDF de manière programmatique. Il offre une large gamme de fonctionnalités, y compris la conversion de HTML en PDF, l'extraction de texte, la fusion de PDF, et plus encore. En intégrant IronPDF dans vos projets C#, vous pouvez gérer efficacement des tâches PDF complexes sans avoir besoin d'une expertise approfondie des internes des PDF.

IronPDF prend également en charge une variété de formats, vous permettant de générer des PDF à partir de HTML brut, de vues Razor, de pages web ASP.NET, ou même directement à partir de structures de données. Cette flexibilité en fait un outil essentiel pour les développeurs construisant des applications modernes axées sur les données.

Pour commencer

Installation d'IronPDF

Pour utiliser IronPDF dans votre projet, suivez ces étapes :

Via la console du gestionnaire de packages NuGet

  1. Ouvrez votre projet .NET dans Visual Studio.

    1. Ouvrez la console du gestionnaire de packages NuGet sous le menu déroulant outils.

    C# Enumerable(Comment cela fonctionne pour les développeurs) : Figure 2

  2. Exécutez la commande suivante :
Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
VB   C#

Via NuGet Package Manager pour la solution

  1. Dans votre projet Visual Studio, allez dans Outils > Gestionnaire de packages NuGet > Gérer les packages NuGet pour la solution.

    1. Rechercher IronPDF

    C# Enumerable(Comment ça fonctionne pour les développeurs) : Figure 3

    1. Cliquez sur "Installer" pour commencer l'installation du package IronPDF dans votre projet.

    C# Enumerable(Comment ça fonctionne pour les développeurs) : Figure 4

Concepts de base d'Enumerable en C

L'interface IEnumerable représente une séquence d'éléments qui peut être énumérée. Des exemples courants incluent les tableaux, les listes et les résultats de requêtes LINQ. En utilisant LINQ, vous pouvez filtrer, trier et projeter des données dans le format souhaité avant de générer des PDF avec IronPDF.

L'un des principaux avantages de IEnumerable est son modèle d'exécution différée, qui permet aux requêtes de n'être exécutées que lorsque leurs résultats sont accédés. Cela permet une manipulation efficace des données et réduit la surcharge de calcul dans les flux de travail complexes.

De plus, le fait que la liste implémente IEnumerable signifie que toute collection comme Listpeut être traité comme un IEnumerable, ce qui permet des opérations LINQ faciles, ainsi que le filtrage et la transformation.

Cas d'utilisation pratiques

Génération de PDFs à partir de données énumérables

Exemple : Exportation d'une liste d'objets vers un tableau PDF

Imaginez que vous avez une liste qui implémente IEnumerable d'employés que vous devez exporter sous forme de tableau PDF. En utilisant IEnumerable et IronPDF, vous pouvez utiliser la méthode d'itération pour parcourir les données et les convertir en un PDF bien structuré.

Pour améliorer la présentation, vous pouvez utiliser des tableaux HTML avec du CSS en ligne pour styliser les lignes et les colonnes de manière dynamique en fonction des données. Cela garantit que le rendu PDF est à la fois fonctionnel et esthétiquement agréable.

Filtrage et transformation des données avant la génération de PDF

Exemple : Utiliser LINQ pour sélectionner et formater des données

Avec LINQ, vous pouvez filtrer et transformer vos données avant de les transmettre à IronPDF. Par exemple, vous pourriez filtrer uniquement les employés actifs et formater leurs noms en majuscules pour la sortie PDF.

var activeEmployees = employees.Where(e => e.IsActive).Select(e => new {
    Name = e.Name.ToUpper(),
    Position = e.Position,
    Age = e.Age
});
var activeEmployees = employees.Where(e => e.IsActive).Select(e => new {
    Name = e.Name.ToUpper(),
    Position = e.Position,
    Age = e.Age
});
Dim activeEmployees = employees.Where(Function(e) e.IsActive).Select(Function(e) New With {
	Key .Name = e.Name.ToUpper(),
	Key .Position = e.Position,
	Key .Age = e.Age
})
VB   C#

Ces données transformées peuvent ensuite être converties dans un format HTML compatible PDF pour le rendu.

Génération par lots de PDF à partir d'énumérables

Exemple : Création de plusieurs PDF à partir d'une collection

Si vous devez générer un PDF distinct pour chaque enregistrement dans une classe de collection, vous pouvez utiliser une boucle foreach pour parcourir l'énumérable et générer des PDFs individuels de manière dynamique. C'est particulièrement utile pour créer des factures, des certificats ou des rapports personnalisés.

foreach (var employee in employees)
{
    string html = $"<h1>{employee.Name}</h1><p>Position: {employee.Position}</p><p>Age: {employee.Age}</p>";
    var pdf = Renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs($"{employee.Name}_Report.pdf");
}
foreach (var employee in employees)
{
    string html = $"<h1>{employee.Name}</h1><p>Position: {employee.Position}</p><p>Age: {employee.Age}</p>";
    var pdf = Renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs($"{employee.Name}_Report.pdf");
}
For Each employee In employees
	Dim html As String = $"<h1>{employee.Name}</h1><p>Position: {employee.Position}</p><p>Age: {employee.Age}</p>"
	Dim pdf = Renderer.RenderHtmlAsPdf(html)
	pdf.SaveAs($"{employee.Name}_Report.pdf")
Next employee
VB   C#

Méthodes d'extension pour les énumérables

En C#, les méthodes d'extension sont un moyen puissant d'ajouter des fonctionnalités aux types existants sans modifier leur code source. Vous pouvez créer une méthode d'extension pour simplifier les opérations sur un IEnumerable ou List.

Par exemple, créons une méthode d'extension pour obtenir le premier élément d'une collection énumérable.

public static class EnumerableExtensions
{
    public static T FirstOrDefaultElement<T>(this IEnumerable<T> collection)
    {
        return collection?.FirstOrDefault();
    }
}
public static class EnumerableExtensions
{
    public static T FirstOrDefaultElement<T>(this IEnumerable<T> collection)
    {
        return collection?.FirstOrDefault();
    }
}
Public Module EnumerableExtensions
	<System.Runtime.CompilerServices.Extension> _
	Public Function FirstOrDefaultElement(Of T)(ByVal collection As IEnumerable(Of T)) As T
		Return collection?.FirstOrDefault()
	End Function
End Module
VB   C#

Mise en œuvre étape par étape

Mise en place du projet

Extrait de code : Initialisation de IronPDF en C

Commencez par configurer votre projet et initialiser IronPDF et la classe ChromePdfRenderer :

using IronPdf;
ChromePdfRenderer renderer = new ChromePdfRenderer();
using IronPdf;
ChromePdfRenderer renderer = new ChromePdfRenderer();
Imports IronPdf
Private renderer As New ChromePdfRenderer()
VB   C#

Conversion des énumérables en contenu PDF

Extrait de code : Itérer et formater des données en HTML

Préparez vos données énumérables sous forme de chaîne HTML :

var employees = new List<Employee>
{
    new Employee { Name = "John Doe", Position = "Developer", Age = 30 },
    new Employee { Name = "Jane Smith", Position = "Designer", Age = 25 }
};
string html = "<table style='width:100%; border: 1px solid black;'>" +
              "<tr><th>Name</th><th>Position</th><th>Age</th></tr>";
foreach (var employee in employees)
{
    html += $"<tr><td>{employee.Name}</td><td>{employee.Position}</td><td>{employee.Age}</td></tr>";
}
html += "</table>";
var employees = new List<Employee>
{
    new Employee { Name = "John Doe", Position = "Developer", Age = 30 },
    new Employee { Name = "Jane Smith", Position = "Designer", Age = 25 }
};
string html = "<table style='width:100%; border: 1px solid black;'>" +
              "<tr><th>Name</th><th>Position</th><th>Age</th></tr>";
foreach (var employee in employees)
{
    html += $"<tr><td>{employee.Name}</td><td>{employee.Position}</td><td>{employee.Age}</td></tr>";
}
html += "</table>";
Dim employees = New List(Of Employee) From {
	New Employee With {
		.Name = "John Doe",
		.Position = "Developer",
		.Age = 30
	},
	New Employee With {
		.Name = "Jane Smith",
		.Position = "Designer",
		.Age = 25
	}
}
Dim html As String = "<table style='width:100%; border: 1px solid black;'>" & "<tr><th>Name</th><th>Position</th><th>Age</th></tr>"
For Each employee In employees
	html &= $"<tr><td>{employee.Name}</td><td>{employee.Position}</td><td>{employee.Age}</td></tr>"
Next employee
html &= "</table>"
VB   C#

Extrait de code : Rendu du HTML en PDF

Convertir le HTML en PDF :

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("Employees.pdf");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("Employees.pdf");
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("Employees.pdf")
VB   C#

Exemple de code complet

Maintenant que nous avons examiné de plus près comment vous pouvez utiliser la classe C# Enumerable avec IronPDF pour générer des fichiers PDF, jetons un coup d'œil à un exemple de code complet où nous avons utilisé ces outils pour générer un nouveau document PDF dynamique.

using System;
using System.Collections.Generic;
using System.Linq;
using IronPdf;
public class Employee
{
    public string Name { get; set; }
    public string Position { get; set; }
    public int Age { get; set; }
}
public class Program
{
    public static void Main(string[] args)
    {
        // Sample employee data
        var employees = new List<Employee>
            {
                new Employee { Name = "John Doe", Position = "Developer", Age = 30 },
                new Employee { Name = "Jane Smith", Position = "Designer", Age = 25 },
                new Employee { Name = "Sam Wilson", Position = "Manager", Age = 35 }
            };
        // Filter and sort data using LINQ
        var filteredEmployees = employees
            .Where(e => e.Age >= 25)
            .OrderBy(e => e.Name)
            .ToList();
        // Generate HTML for the PDF
        string html = "<h1 style='text-align:center;'>Employee Report</h1>" +
                      "<table style='width:100%; border-collapse: collapse;'>" +
                      "<tr style='background-color: #f2f2f2;'>" +
                      "<th style='border: 1px solid black; padding: 8px;'>Name</th>" +
                      "<th style='border: 1px solid black; padding: 8px;'>Position</th>" +
                      "<th style='border: 1px solid black; padding: 8px;'>Age</th></tr>";
        foreach (var employee in filteredEmployees)
        {
            html += $"<tr>" +
                    $"<td style='border: 1px solid black; padding: 8px;'>{employee.Name}</td>" +
                    $"<td style='border: 1px solid black; padding: 8px;'>{employee.Position}</td>" +
                    $"<td style='border: 1px solid black; padding: 8px;'>{employee.Age}</td>" +
                    $"</tr>";
        }
        html += "</table>";
        // Initialize ChromePdfRenderer
        ChromePdfRenderer renderer = new ChromePdfRenderer();
        // Render the HTML to PDF
        try
        {
            var pdf = renderer.RenderHtmlAsPdf(html);
            string outputPath = "EmployeeReport.pdf";
            pdf.SaveAs(outputPath);
            Console.WriteLine($"PDF generated successfully at: {outputPath}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error generating PDF: {ex.Message}");
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using IronPdf;
public class Employee
{
    public string Name { get; set; }
    public string Position { get; set; }
    public int Age { get; set; }
}
public class Program
{
    public static void Main(string[] args)
    {
        // Sample employee data
        var employees = new List<Employee>
            {
                new Employee { Name = "John Doe", Position = "Developer", Age = 30 },
                new Employee { Name = "Jane Smith", Position = "Designer", Age = 25 },
                new Employee { Name = "Sam Wilson", Position = "Manager", Age = 35 }
            };
        // Filter and sort data using LINQ
        var filteredEmployees = employees
            .Where(e => e.Age >= 25)
            .OrderBy(e => e.Name)
            .ToList();
        // Generate HTML for the PDF
        string html = "<h1 style='text-align:center;'>Employee Report</h1>" +
                      "<table style='width:100%; border-collapse: collapse;'>" +
                      "<tr style='background-color: #f2f2f2;'>" +
                      "<th style='border: 1px solid black; padding: 8px;'>Name</th>" +
                      "<th style='border: 1px solid black; padding: 8px;'>Position</th>" +
                      "<th style='border: 1px solid black; padding: 8px;'>Age</th></tr>";
        foreach (var employee in filteredEmployees)
        {
            html += $"<tr>" +
                    $"<td style='border: 1px solid black; padding: 8px;'>{employee.Name}</td>" +
                    $"<td style='border: 1px solid black; padding: 8px;'>{employee.Position}</td>" +
                    $"<td style='border: 1px solid black; padding: 8px;'>{employee.Age}</td>" +
                    $"</tr>";
        }
        html += "</table>";
        // Initialize ChromePdfRenderer
        ChromePdfRenderer renderer = new ChromePdfRenderer();
        // Render the HTML to PDF
        try
        {
            var pdf = renderer.RenderHtmlAsPdf(html);
            string outputPath = "EmployeeReport.pdf";
            pdf.SaveAs(outputPath);
            Console.WriteLine($"PDF generated successfully at: {outputPath}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error generating PDF: {ex.Message}");
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports IronPdf
Public Class Employee
	Public Property Name() As String
	Public Property Position() As String
	Public Property Age() As Integer
End Class
Public Class Program
	Public Shared Sub Main(ByVal args() As String)
		' Sample employee data
		Dim employees = New List(Of Employee) From {
			New Employee With {
				.Name = "John Doe",
				.Position = "Developer",
				.Age = 30
			},
			New Employee With {
				.Name = "Jane Smith",
				.Position = "Designer",
				.Age = 25
			},
			New Employee With {
				.Name = "Sam Wilson",
				.Position = "Manager",
				.Age = 35
			}
		}
		' Filter and sort data using LINQ
		Dim filteredEmployees = employees.Where(Function(e) e.Age >= 25).OrderBy(Function(e) e.Name).ToList()
		' Generate HTML for the PDF
		Dim html As String = "<h1 style='text-align:center;'>Employee Report</h1>" & "<table style='width:100%; border-collapse: collapse;'>" & "<tr style='background-color: #f2f2f2;'>" & "<th style='border: 1px solid black; padding: 8px;'>Name</th>" & "<th style='border: 1px solid black; padding: 8px;'>Position</th>" & "<th style='border: 1px solid black; padding: 8px;'>Age</th></tr>"
		For Each employee In filteredEmployees
			html &= $"<tr>" & $"<td style='border: 1px solid black; padding: 8px;'>{employee.Name}</td>" & $"<td style='border: 1px solid black; padding: 8px;'>{employee.Position}</td>" & $"<td style='border: 1px solid black; padding: 8px;'>{employee.Age}</td>" & $"</tr>"
		Next employee
		html &= "</table>"
		' Initialize ChromePdfRenderer
		Dim renderer As New ChromePdfRenderer()
		' Render the HTML to PDF
		Try
			Dim pdf = renderer.RenderHtmlAsPdf(html)
			Dim outputPath As String = "EmployeeReport.pdf"
			pdf.SaveAs(outputPath)
			Console.WriteLine($"PDF generated successfully at: {outputPath}")
		Catch ex As Exception
			Console.WriteLine($"Error generating PDF: {ex.Message}")
		End Try
	End Sub
End Class
VB   C#

Sortie PDF

C# Enumerable(comment cela fonctionne pour les développeurs) : Figure 5

Explication du code

Ce programme C# est conçu pour générer un rapport PDF des données filtrées des employés en utilisant la bibliothèque IronPDF. Le code ci-dessus commence par définir une classe Employee avec des propriétés pour le nom, le poste et l'âge, représentant les dossiers individuels des employés.

Une liste d'exemples de données d'employés est créée, composée de trois objets Employee avec des noms, des postes et des âges différents. Le programme utilise ensuite LINQ pour filtrer cette liste, en sélectionnant uniquement les employés âgés de 25 ans ou plus, et les trie alphabétiquement par nom. Cette liste filtrée et triée est stockée dans la variable filteredEmployees.

Ensuite, le programme construit une chaîne HTML qui sera utilisée pour générer le PDF. Cela commence par un en-tête et une structure de tableau, définissant les en-têtes de colonne pour Nom, Poste et Âge. Il parcourt ensuite la liste filtrée des employés, générant dynamiquement des lignes de tableau pour les informations de chaque employé. Le fichier HTML résultant est utilisé pour créer un PDF via IronPDF.ChromePdfRenderer.

L'exemple ci-dessus démontre efficacement comment utiliserIronPDFpour générer un PDF à partir de HTML généré dynamiquement, en mettant en valeur la puissance de LINQ pour filtrer et trier les données, et en gérant les exceptions avec élégance pendant le processus de génération de PDF.

Conseils de performance et meilleures pratiques

Optimisation des opérations Enumerable

Utilisez LINQ pour optimiser le filtrage et les transformations de vos données. Par exemple :

var filteredEmployees = employees.Where(e => e.Age > 25).OrderBy(e => e.Name);
var filteredEmployees = employees.Where(e => e.Age > 25).OrderBy(e => e.Name);
Dim filteredEmployees = employees.Where(Function(e) e.Age > 25).OrderBy(Function(e) e.Name)
VB   C#

Minimisez les opérations redondantes en chaînant efficacement les méthodes LINQ. Cela améliore les performances, surtout lorsque vous travaillez avec de grands ensembles de données.

Utilisation efficace de la mémoire avec de grands ensembles de données

Pour les ensembles de données volumineux, envisagez de diffuser les données en plus petits morceaux pour éviter une surcharge de mémoire. Utilisez yield return pour générer des données de collection non génériques de manière paresseuse, assurant une utilisation efficace de la mémoire.

IEnumerable<Employee> GetEmployees() {
    foreach (var employee in database.GetAllEmployees()) {
        yield return employee;
    }
}
IEnumerable<Employee> GetEmployees() {
    foreach (var employee in database.GetAllEmployees()) {
        yield return employee;
    }
}
Private Iterator Function GetEmployees() As IEnumerable(Of Employee)
	For Each employee In database.GetAllEmployees()
		Yield employee
	Next employee
End Function
VB   C#

Gestion des erreurs lors de la génération de PDF

Enveloppez votre logique de génération de PDF dans un bloc try-catch pour gérer les erreurs avec élégance :

try
{
    var pdf = Renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("output.pdf");
}
catch (IronPdf.Exceptions.PdfException ex)
{
    Console.WriteLine($"PDF Error: {ex.Message}");
}
catch (Exception ex)
{
    Console.WriteLine($"General Error: {ex.Message}");
}
try
{
    var pdf = Renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("output.pdf");
}
catch (IronPdf.Exceptions.PdfException ex)
{
    Console.WriteLine($"PDF Error: {ex.Message}");
}
catch (Exception ex)
{
    Console.WriteLine($"General Error: {ex.Message}");
}
Try
	Dim pdf = Renderer.RenderHtmlAsPdf(html)
	pdf.SaveAs("output.pdf")
Catch ex As IronPdf.Exceptions.PdfException
	Console.WriteLine($"PDF Error: {ex.Message}")
Catch ex As Exception
	Console.WriteLine($"General Error: {ex.Message}")
End Try
VB   C#

La journalisation des erreurs et la fourniture de retours d'information conviviaux peuvent améliorer considérablement la robustesse de votre application.

Conclusion

L'intégration de IEnumerable en C# avec IronPDFdéverrouille un moyen efficace et flexible de générer des PDF professionnels de manière programmatique. En exploitant IEnumerable, vous pouvez rationaliser la transformation et le formatage des données tout en profitant des fonctionnalités riches d'IronPDF pour produire des documents de haute qualité. Que vous exportiez des rapports de données, créiez des factures ou génériez du contenu personnalisé, cette combinaison garantit évolutivité, performance et facilité d'utilisation.

Nous encourageons les développeurs à explorer des fonctionnalités plus avancées d'IronPDF, telles que l'intégration de multimédia ou la sécurisation de PDFs, pour améliorer encore leurs flux de travail d'automatisation de documents. Pour des informations supplémentaires, des tutoriels et de l'assistance, référez-vous au Documentation IronPDF.

< PRÉCÉDENT
C# Parallel Foreach (Comment ça fonctionne pour les développeurs)
SUIVANT >
Événements C# (Comment cela fonctionne pour les développeurs)