AIDE .NET

Syntaxe des requêtes jointes LINQ en C# (Comment ça marche pour les développeurs)

Publié février 18, 2024
Partager:

Dans la polyvalence de la programmation C#, LINQ (Langue Requête intégrée) est un outil puissant pour interroger et manipuler des collections d'objets. Parmi les nombreux opérateurs offerts par LINQ, l'opérateur Join est un acteur clé lorsqu'il s'agit de fusionner des données provenant de sources multiples.

Dans cet article, nous allons nous plonger dans les complexités de la C# LINQ Join operator (opérateur de jointure)il s'agit d'un outil qui permet de découvrir ses fonctionnalités, sa syntaxe et ses applications concrètes.

Comprendre les bases de la clause de jonction

A la base, l'opérateur LINQ Join est conçu pour combiner des éléments de deux ou plusieurs collections sur la base d'une condition spécifiée. Cet opérateur permet aux développeurs d'effectuer des jointures de type SQL sur des collections en mémoire, facilitant ainsi la fusion de données provenant de sources disparates.

Syntaxe de l'opérateur LINQ Join

La syntaxe de l'opérateur LINQ Join est expressive et suit un modèle qui ressemble aux jointures SQL. La syntaxe de base est la suivante :

var queryResult = 
    from element1 in collection1
    join element2 in collection2 on element1.Key equals element2.Key
    select new { element1, element2 };
var queryResult = 
    from element1 in collection1
    join element2 in collection2 on element1.Key equals element2.Key
    select new { element1, element2 };
Dim queryResult = From element1 In collection1
	Join element2 In collection2 On element1.Key Equals element2.Key
	Select New With {
		Key element1,
		Key element2
	}
VB   C#

Dans cette syntaxe :

  • élément1 et élément2 sont des variables représentant des éléments de collection1 et collection2.
  • element1.Key et element2.Key sont les propriétés utilisées comme base pour l'opération de jointure.
  • Le mot-clé equals spécifie la condition de la jointure.
  • La clause select crée un nouvel objet qui combine les éléments des deux collections.

Types de jointures LINQ

LINQ prend en charge plusieurs types de jointures, notamment :

  1. Inner Join: Renvoie uniquement les éléments dont les clés correspondent dans les deux collections.
var innerJoin = from customer in customers
                    join order in orders on customer.CustomerID equals order.CustomerID // join orders to customers based on the customer ID key
                    select new { customer.CustomerID, customer.CustomerName, order.OrderID }; // create a new anonymous object based on the objects obtained from the join
var innerJoin = from customer in customers
                    join order in orders on customer.CustomerID equals order.CustomerID // join orders to customers based on the customer ID key
                    select new { customer.CustomerID, customer.CustomerName, order.OrderID }; // create a new anonymous object based on the objects obtained from the join
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#
  1. Jointure externe gauche (Défaut): Renvoie tous les éléments de la collection de gauche et les éléments correspondants de la collection de droite. Si aucune correspondance n'est trouvée, le résultat contiendra la valeur par défaut pour les éléments du côté droit.
var leftOuterJoin = from customer in customers
                        join order in orders on customer.CustomerID equals order.CustomerID into customerOrders
                        from co in customerOrders.DefaultIfEmpty()
                        select new { customer.CustomerID, customer.CustomerName, OrderID = co?.OrderID ?? -1 };
var leftOuterJoin = from customer in customers
                        join order in orders on customer.CustomerID equals order.CustomerID into customerOrders
                        from co in customerOrders.DefaultIfEmpty()
                        select new { customer.CustomerID, customer.CustomerName, OrderID = co?.OrderID ?? -1 };
Dim leftOuterJoin = From customer In customers
	Group Join order In orders On customer.CustomerID Equals order.CustomerID Into customerOrders = Group
	From co In customerOrders.DefaultIfEmpty()
	Select New With {
		Key customer.CustomerID,
		Key customer.CustomerName,
		Key .OrderID = If(co?.OrderID, -1)
	}
VB   C#
  1. Group Join: Regrouper les éléments de la collection de gauche avec les éléments correspondants de la collection de droite.
var groupJoin = from customer in customers
                    join order in orders on customer.CustomerID equals order.CustomerID into customerOrders
                    select new { customer.CustomerID, customer.CustomerName, Orders = customerOrders };
var groupJoin = from customer in customers
                    join order in orders on customer.CustomerID equals order.CustomerID into customerOrders
                    select new { customer.CustomerID, customer.CustomerName, Orders = customerOrders };
Dim groupJoin = From customer In customers
	Group Join order In orders On customer.CustomerID Equals order.CustomerID Into customerOrders = Group
	Select New With {
		Key customer.CustomerID,
		Key customer.CustomerName,
		Key .Orders = customerOrders
	}
VB   C#

Une application concrète : Combinaison des données relatives aux clients et aux commandes

Prenons un exemple pratique dans lequel nous avons deux collections : clients et commandes. Nous voulons créer un ensemble de résultats qui combine les informations sur les clients avec leurs commandes correspondantes en utilisant l'opérateur LINQ Join.

var customerOrderInfo = 
    from customer in customers
    join order in orders on customer.CustomerID equals order.CustomerID
    select new { customer.CustomerID, customer.CustomerName, order.OrderID, order.OrderDate };
var customerOrderInfo = 
    from customer in customers
    join order in orders on customer.CustomerID equals order.CustomerID
    select new { customer.CustomerID, customer.CustomerName, order.OrderID, order.OrderDate };
Dim customerOrderInfo = From customer In customers
	Join order In orders On customer.CustomerID Equals order.CustomerID
	Select New With {
		Key customer.CustomerID,
		Key customer.CustomerName,
		Key order.OrderID,
		Key order.OrderDate
	}
VB   C#

Dans cet exemple, l'ensemble de résultats contiendra des entrées contenant des informations sur les clients ainsi que les commandes qui leur sont associées. La syntaxe de la méthode d'extension join permet aux développeurs C# d'effectuer des opérations de jointure de type SQL.

Présentation d'IronPDF

Syntaxe de la requête jointe LINQ en C# (Comment ça marche pour les développeurs) : Figure 1 - Page web d'IronPDF

IronPDF est une bibliothèque C# complète conçue pour créer, traiter et modifier des documents PDF. Il permet aux développeurs de générer dynamiquement des PDF à partir de diverses sources de données, ce qui en fait une solution polyvalente pour les applications nécessitant la génération de documents PDF.

Installation d'IronPDF : Un démarrage rapide

Pour commencer à exploiter la bibliothèque IronPDF dans votre projet C#, vous pouvez facilement installer le package NuGet IronPDF. Utilisez la commande suivante dans votre console de gestion des paquets :

Install-Package IronPdf

Vous pouvez également rechercher "IronPDF" dans le gestionnaire de paquets NuGet et l'installer à partir de là.

Syntaxe de la requête jointe LINQ en C# (Comment ça marche pour les développeurs) : Figure 2 - Installation de la bibliothèque IronPDF à partir du gestionnaire de paquets NuGet

LINQ Join et IronPDF : Un duo dynamique ?

L'opérateur LINQ Join, connu pour sa capacité à fusionner des données provenant de sources disparates, peut être un atout précieux dans les scénarios où l'intégration des données est essentielle. Lorsqu'il s'agit d'utiliser LINQ Join avec IronPDF, la première chose à prendre en compte est la nature des données que vous avez l'intention d'intégrer dans le document PDF.

Le point fort d'IronPDF est son HTML vers PDF ce qui permet de conserver les mises en page et les styles intacts. Cette fonction permet de générer des PDF à partir de contenus web, ce qui est idéal pour les rapports, les factures et la documentation. Les fichiers HTML, les URL et les chaînes HTML peuvent être convertis en PDF de manière transparente.

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");
    }
}
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");
    }
}
Imports IronPdf
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()
		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
VB   C#

Scénario 1 : Combinaison des données avant la génération du PDF

Si votre objectif est de combiner des données provenant de différentes sources avant de lancer le processus de génération de PDF, LINQ Join peut être utilisé indépendamment. Une fois que vous disposez d'un ensemble de données unifié, vous pouvez tirer parti d'IronPDF pour générer dynamiquement un document PDF sur la base des données intégrées.

Voici un exemple simplifié :

// Assume 'customerOrderInfo' is a result set obtained using LINQ Join
var pdfDocument = new IronPdf.ChromePdfRenderer();
foreach (var entry in query)
{
    // Use IronPDF to add content to the PDF based on integrated data
    pdfDocument.AddHTML($"<p>Customer ID: {entry.CustomerID}, Order ID: {entry.OrderID}</p>");
}
// Save or render the PDF document as needed
pdfDocument.SaveAs("IntegratedDataDocument.pdf");
// Assume 'customerOrderInfo' is a result set obtained using LINQ Join
var pdfDocument = new IronPdf.ChromePdfRenderer();
foreach (var entry in query)
{
    // Use IronPDF to add content to the PDF based on integrated data
    pdfDocument.AddHTML($"<p>Customer ID: {entry.CustomerID}, Order ID: {entry.OrderID}</p>");
}
// Save or render the PDF document as needed
pdfDocument.SaveAs("IntegratedDataDocument.pdf");
' Assume 'customerOrderInfo' is a result set obtained using LINQ Join
Dim pdfDocument = New IronPdf.ChromePdfRenderer()
For Each entry In query
	' Use IronPDF to add content to the PDF based on integrated data
	pdfDocument.AddHTML($"<p>Customer ID: {entry.CustomerID}, Order ID: {entry.OrderID}</p>")
Next entry
' Save or render the PDF document as needed
pdfDocument.SaveAs("IntegratedDataDocument.pdf")
VB   C#

Découvrez d'autres façons de générer des documents PDF et comment vous pouvez utiliser LINQ Join avec IronPDF en visitant la rubrique documentation page.

Scénario 2 : Intégration dynamique des données pendant la génération du PDF

IronPDF permet l'ajout dynamique de contenu aux documents PDF, ce qui rend possible l'intégration de données à l'aide de LINQ Join pendant le processus de génération du PDF lui-même. Ici, nous allons créer et commander la classe client pour représenter l'application réelle. Les sources de données peuvent être une base de données SQL ou un format structuré, dans ce cas, une liste d'objets contenant un ensemble d'attributs de données, tout comme les tables de la base de données. L'exemple suivant montre une intégration détaillée de la méthode LINQ Join avec IronPDF en utilisant chaînes HTML pour générer le document :

using System;
using System.Collections.Generic;
using System.Linq;
using IronPdf;
class Order
{
    public int OrderID { get; set; }
    public int CustomerID { get; set; }
    // Other order-related properties...
}
class Customer
{
    public int CustomerID { get; set; }
    // Other customer-related properties...
}
class Program
{
    static void Main()
    {
        // Sample orders collection
        var orders = new List<Order>
        {
            new Order { OrderID = 1, CustomerID = 1 },
            new Order { OrderID = 2, CustomerID = 1 },
            new Order { OrderID = 3, CustomerID = 2 },
        };
        // Sample customers collection
        var customers = new List<Customer>
        {
            new Customer { CustomerID = 1 },
            new Customer { CustomerID = 2 },
        };
        var pdfDocument = new ChromePdfRenderer();
        string htmlContent = "<h1>Details generated using LINQ JOIN</h1>";
    // Use join to find customer orders
    var query = from customer in customers
                     join order in orders on customer.CustomerID equals order.CustomerID
                     select new { CustomerID = customer.CustomerID, OrderID = order.OrderID };
    foreach (var result in query)
    {
            // Use IronPDF to dynamically add content to the PDF based on integrated data
            htmlContent += $"<p>Customer ID: {result.CustomerID}, Order ID: {result.OrderID}</p>";
    }
    // Save or render the PDF document as needed
    pdfDocument.RenderHtmlAsPdf(htmlContent)
    .SaveAs("DynamicIntegratedDataDocument.pdf");
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using IronPdf;
class Order
{
    public int OrderID { get; set; }
    public int CustomerID { get; set; }
    // Other order-related properties...
}
class Customer
{
    public int CustomerID { get; set; }
    // Other customer-related properties...
}
class Program
{
    static void Main()
    {
        // Sample orders collection
        var orders = new List<Order>
        {
            new Order { OrderID = 1, CustomerID = 1 },
            new Order { OrderID = 2, CustomerID = 1 },
            new Order { OrderID = 3, CustomerID = 2 },
        };
        // Sample customers collection
        var customers = new List<Customer>
        {
            new Customer { CustomerID = 1 },
            new Customer { CustomerID = 2 },
        };
        var pdfDocument = new ChromePdfRenderer();
        string htmlContent = "<h1>Details generated using LINQ JOIN</h1>";
    // Use join to find customer orders
    var query = from customer in customers
                     join order in orders on customer.CustomerID equals order.CustomerID
                     select new { CustomerID = customer.CustomerID, OrderID = order.OrderID };
    foreach (var result in query)
    {
            // Use IronPDF to dynamically add content to the PDF based on integrated data
            htmlContent += $"<p>Customer ID: {result.CustomerID}, Order ID: {result.OrderID}</p>";
    }
    // Save or render the PDF document as needed
    pdfDocument.RenderHtmlAsPdf(htmlContent)
    .SaveAs("DynamicIntegratedDataDocument.pdf");
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports IronPdf
Friend Class Order
	Public Property OrderID() As Integer
	Public Property CustomerID() As Integer
	' Other order-related properties...
End Class
Friend Class Customer
	Public Property CustomerID() As Integer
	' Other customer-related properties...
End Class
Friend Class Program
	Shared Sub Main()
		' Sample orders collection
		Dim orders = New List(Of Order) From {
			New Order With {
				.OrderID = 1,
				.CustomerID = 1
			},
			New Order With {
				.OrderID = 2,
				.CustomerID = 1
			},
			New Order With {
				.OrderID = 3,
				.CustomerID = 2
			}
		}
		' Sample customers collection
		Dim customers = New List(Of Customer) From {
			New Customer With {.CustomerID = 1},
			New Customer With {.CustomerID = 2}
		}
		Dim pdfDocument = New ChromePdfRenderer()
		Dim htmlContent As String = "<h1>Details generated using LINQ JOIN</h1>"
	' Use join to find customer orders
	Dim query = From customer In customers
		Join order In orders On customer.CustomerID Equals order.CustomerID
		Select New With {
			Key .CustomerID = customer.CustomerID,
			Key .OrderID = order.OrderID
		}
	For Each result In query
			' Use IronPDF to dynamically add content to the PDF based on integrated data
			htmlContent &= $"<p>Customer ID: {result.CustomerID}, Order ID: {result.OrderID}</p>"
	Next result
	' Save or render the PDF document as needed
	pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("DynamicIntegratedDataDocument.pdf")
	End Sub
End Class
VB   C#

Ce code utilise le mot-clé join qui permet de trouver les commandes correspondantes pour chaque client, ce qui rend la requête plus concise et plus expressive.

Syntaxe de la requête jointe LINQ en C# (Comment ça marche pour les développeurs) : Figure 3 - PDF produit à partir de l'exemple de code précédent

Conclusion

En conclusion, IronPDF constitue une solution robuste pour la génération de PDF dans les applications C#. Combiné au puissant opérateur LINQ Join, les développeurs peuvent réaliser une intégration transparente des données avant ou pendant le processus de génération du PDF. Que vous ayez besoin de combiner des informations sur les clients avec des commandes ou de fusionner des données provenant de diverses sources, le duo dynamique formé par LINQ Join et IronPDF constitue une approche souple et efficace pour améliorer vos capacités de génération de PDF dans les applications C#.

En conclusion, l'opérateur LINQ Join de C# est un outil formidable pour intégrer de manière transparente des données provenant de sources multiples. Que vous traitiez avec des bases de données, des réponses d'API ou des collections en mémoire, l'opérateur LINQ Join simplifie le processus de combinaison des données en fonction de conditions spécifiées. Alors que vous naviguez dans le paysage diversifié des connexions de données dans vos applications C#, considérez la puissance et la flexibilité que l'opérateur LINQ Join apporte à votre boîte à outils d'intégration de données. La maîtrise de cet opérateur ouvre de nouvelles possibilités pour travailler et manipuler efficacement les données, améliorant ainsi les capacités de vos applications C#.

IronPDF offre un service de essai gratuit pour tester l'ensemble de ses fonctionnalités. Toutefois, il doit être licensed à l'expiration de la période d'essai.

< PRÉCÉDENT
Classe scellée C# (Comment ça marche pour les développeurs)
SUIVANT >
C# String.Format (Comment ça marche pour les développeurs)