.NET ヘルプ

C# LINQ Join クエリ構文(開発者向けの動作方法)

更新済み 2月 18, 2024
共有:

C#プログラミングの多様性において、LINQ (言語統合クエリ (Language Integrated Query)) オブジェクトのコレクションをクエリして操作するための強力なツールとして際立っています。 多くのLINQオペレーターの中で、Joinオペレーターは複数のソースからデータを統合する際の重要な役割を果たします。

この記事では、の複雑さについて深く掘り下げます。 C# LINQ Join オペレーターその機能性、構文、および実際の応用を解明します。

結合句の基礎を理解する

基本的に、LINQのJoin演算子は、指定された条件に基づいて二つ以上のコレクションから要素を結合するために設計されています。 このオペレーターは、開発者がメモリ内コレクションに対してSQLのような結合を実行できるようにし、異なるソースからのデータのマージを容易にします。

LINQ Join 演算子の構文

LINQ Join演算子の構文は表現力があり、SQLのジョインに似たパターンに従います。 基本構文は次のとおりです:

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#

以下の構文で:

  • element1element2 は、collection1collection2 からの要素を表す変数です。
  • element1.Key および element2.Key は、結合操作の基礎として使用されるプロパティです。
  • equalsキーワードは結合の条件を指定します。
  • select 句は、両方のコレクションから要素を結合して新しいオブジェクトを作成します。

LINQ結合の種類

LINQは、次の種類の結合をサポートしています:

  1. インナー ジョイン(Inner 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
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. Left Outer Join
    レフト・アウター・ジョイン (デフォルト):** 左集合からすべての要素と右集合からの一致する要素を返します。 一致が見つからない場合、結果には右側の要素のデフォルト値が含まれます。
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: 左側のコレクションから一致する要素を右側のコレクションの要素とグループ化します。
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#

実世界のアプリケーション: カスタマーおよび注文データの統合

実用的な例として、customersorders という二つのコレクションを考えてみましょう。 顧客情報とそれに対応する注文を結合する結果セットを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#

この例では、結果セットには顧客情報とそれに関連する注文が含まれます。 結合拡張メソッドの構文は、C#開発者がSQLのような結合操作を行うのに役立ちます。

IronPDFの紹介

C# LINQ結合クエリ構文(開発者向けの動作方法):図1 - IronPDFウェブページ

IronPDF は、PDFドキュメントの作成、処理、および編集のために設計された包括的なC#ライブラリです。 開発者がさまざまなデータソースから動的にPDFを生成できるようにすることで、PDFドキュメント生成を必要とするアプリケーションに対する多目的なソリューションを提供します。

IronPDFのインストール: クイックスタート

C#プロジェクトでIronPDFライブラリを活用するためには、IronPDFのNuGetパッケージを簡単にインストールできます。 次のコマンドをパッケージ マネージャー コンソールで使用してください:

Install-Package IronPdf

または、NuGetパッケージマネージャーで「IronPDF」を検索し、そこからインストールすることもできます。

C# LINQ結合クエリ構文(開発者向けの仕組み):図2 - NuGetパッケージマネージャからIronPDFライブラリをインストール

LINQ Join と IronPDF: ダイナミックデュオ?

LINQ Join演算子は、異なるソースからのデータを統合できる能力で知られており、データ統合が重要なシナリオにおいて貴重な資産となります。 IronPDFでLINQ Joinを利用する際、主な考慮事項はPDFドキュメントに統合しようとするデータの性質です。

IronPDFのハイライトは、その HTMLからPDF レイアウトやスタイルをそのまま保持する関数。 この機能では、ウェブコンテンツからPDFを生成することができます。レポート、請求書、ドキュメントに最適です。 HTMLファイル、URL、およびHTML文字列はシームレスに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");
    }
}
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#

シナリオ 1: PDF生成前にデータを結合

PDF生成プロセスを開始する前に異なるデータソースからデータを結合することが目的であれば、LINQ Joinを独立して使用することができます。 統合されたデータセットを持っている場合、IronPDFを使用して、統合されたデータに基づいて動的に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
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#

次のリンクを訪れて、PDFドキュメント生成のさらなる方法やIronPDFでLINQ Joinを使用する方法について詳しく見てみましょう。 ドキュメント ページ

シナリオ2: PDF生成中の動的データ統合

IronPDFは、PDFドキュメントに動的コンテンツを追加することを可能にし、PDF生成プロセス中にLINQ Joinを使用してデータを統合することができます。 ここでは、実際のアプリケーションを表現するために、customerクラスを作成し、順序を付けます。 データソースはSQLデータベースやある構造化フォーマットである可能性があり、この場合、データ属性のセットを含むオブジェクトのリストといった、データベースのテーブルのようなものです。 以下の例は、IronPDFを使用してLINQのJoinメソッドを詳細に統合する方法を示しています。 HTML文字列 ドキュメントを生成するために:

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#

このコードは join キーワードを利用し、各顧客に対する一致する注文を見つけるのに役立ち、クエリをより簡潔で表現力豊かなものにします。

C# LINQ結合クエリ構文(開発者向けの動作方法):図3 - 前のコード例から出力されたPDF

結論

結論として、IronPDFはC#アプリケーションにおけるPDF生成の強力なソリューションとして機能します。 強力なLINQ Join演算子と組み合わせることで、開発者はPDF生成プロセスの前または途中でシームレスなデータ統合を実現できます。 顧客情報と注文を結合する必要がある場合や、さまざまなソースからデータを統合する必要がある場合、LINQ JoinとIronPDFの動的な組み合わせは、C#アプリケーションにおけるPDF生成機能を強化するための柔軟で効率的なアプローチを提供します。

結論として、C#のLINQ Join演算子は、複数のソースからデータをシームレスに統合するための強力なツールです。 データベース、APIレスポンス、またはメモリ内コレクションを扱う場合でも、LINQ Joinオペレーターは指定された条件に基づいてデータを組み合わせるプロセスを簡素化します。 C#アプリケーションにおける多様なデータ接続の状況を進む中で、データ統合ツールキットにLINQ Join演算子がもたらす力と柔軟性を考慮してください。 この演算子を習得することで、データの効率的な操作と操作が可能になり、C#アプリケーションの機能を強化できます。

IronPDFは 無料体験 完全な機能をテストするために。 しかし、それは必要です ライセンスされている 試用期間が終了すると。

< 以前
C# 密封クラス(開発者向けの仕組み)
次へ >
C# String.Format(開発者向けの動作方法)

準備はできましたか? バージョン: 2024.9 新発売

無料のNuGetダウンロード 総ダウンロード数: 10,659,073 View Licenses >