IRONSOFTWAREHOME
開發者更新

C# LINQ 連接查詢語法(對於開發者的運行原理)

Jacob Mellor,首席技術官 @ Team Iron
Jacob Mellor
Updated: 2026年4月23日

在C#程式設計的多功能性中,LINQ(語言整合查詢)作為一個強大的工具,專門用於查詢和處理物件集合。 在LINQ提供的眾多操作符中,連接操作符在合併來自多個來源的資料時是一個關鍵。

在本文中,我們將深入探討C# LINQ連接操作符,解開其功能、語法以及實際應用。

理解連接子句的基本原理

LINQ連接操作符的核心是設計用於根據指定條件合併來自兩個或多個集合的元素。 這個操作符使開發者能在記憶體中的集合上執行類似SQL的連接操作,從而輕鬆合併來自不同來源的資料。

LINQ連接操作符的語法

LINQ連接操作符的語法表達力強,遵循類似SQL連接的模式。 基本語法如下:

var queryResult = 
    from element1 in collection1
    join element2 in collection2 on element1.Key equals element2.Key
    select new { element1, element2 };

在這個語法中:

  • 元素1和元素2是代表來自集合1和集合2的元素的變數。
  • 元素1.鍵和元素2.鍵是用作連接操作基礎的屬性。
  • 等於關鍵字指定了連接的條件。
  • 選擇子句建立了結合兩個集合元素的新物件。

LINQ連接的型別

LINQ支持多種型別的連接,包括:

  1. **內連接:**僅返回在兩個集合中具有匹配鍵的元素。

    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
  2. **左外連接(預設):**返回左集合的所有元素和右集合中的匹配元素。 如果沒有找到匹配,結果將包含右側元素的預設值。

    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 };
  3. **分組連接:**將左集合中的元素與右集合中的匹配元素分組。

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

實際應用:合併客戶和訂單資料

考慮一下實際範例,我們有兩個集合:客戶和訂單。 我們希望使用LINQ連接操作符建立一個包含客戶資訊和其相應訂單的結果集。

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

在此範例中,結果集將包含包含客戶資訊及其相關訂單的條目。 連接擴展方法語法幫助C#開發者執行類似SQL的連接操作。

介紹IronPDF

C# LINQ連接查詢語法(它如何為開發者工作):圖1 - IronPDF網頁

使用IronPDF開發PDF解決方案是一個全面的C#程式庫,專為建立、處理和編輯PDF文件而設計。 它使開發者能夠動態從各種資料來源生成PDF,是需要PDF文件生成的應用程式的多功能解決方案。

安裝IronPDF:快速入門

要在您的C#專案中開始使用IronPDF程式庫,可以輕鬆安裝IronPDF NuGet套件。 在您的套件管理器控制台中使用以下命令:

PM > Install-Package IronPdf

或者,您可以在NuGet套件管理器中搜尋"IronPDF"並從那裡安裝它。

C# LINQ連接查詢語法(它如何為開發者工作):圖2 - 從NuGet套件管理器安裝IronPDF程式庫

LINQ連接和IronPDF:動態雙重奏?

LINQ連接操作符以其合併來自不同來源的資料能力而聞名,它在資料整合關鍵的情境中可成為寶貴的資產。 當涉及到將LINQ連接與IronPDF一起使用時,主要考量是您想要整合到PDF文件中的資料的性質。

IronPDF的亮點是其HTML到PDF轉換功能,它保持您的佈局和樣式不變。 這一功能允許從Web內容生成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");
    }
}

場景1:在PDF生成之前合併資料

如果您的目標是在初始化PDF生成過程之前合併來自不同資料來源的資料,可以獨立運用LINQ連接。 一旦有了統一的資料集,您可以利用IronPDF基於整合的資料動態生成PDF文件。

這裡有一個簡化的範例:

// Assume 'customerOrderInfo' is a result set obtained using LINQ Join
var pdfDocument = new IronPdf.ChromePdfRenderer();
foreach (var entry in customerOrderInfo)
{
    // 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");

查看更多PDF文件生成的方式及如何將LINQ連接與IronPDF一起使用,請存取IronPDF文件。

場景2:在PDF生成過程中動態資料整合

IronPDF允許在PDF文件中新增動態內容,使其在PDF生成過程中使用LINQ連接實現資料整合成為可能。 在這裡,我們將建立和訂購客戶類以代表實際應用。 資料來源可以是SQL資料庫或某些結構化格式,例如包含一組資料屬性的物件列表,類似於資料庫中的表格。 以下範例展示了使用IronPDF與LINQ連接方法的詳細整合,我們使用HTML字元串來進行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");
    }
}

此程式碼使用join關鍵字,有助於找到每個客戶的匹配訂單,使查詢更為簡潔和表達力強。

C# LINQ連接查詢語法(它如何為開發者工作):圖3 - 前述程式碼範例的輸出PDF

結論

總之,IronPDF在C#應用程式中的PDF生成是個強大的解決方案。 當結合強大的LINQ連接操作符時,開發者能夠在PDF生成過程之前或期間實現無縫資料整合。 無論您需要合併客戶資訊與訂單,還是合併來自多種來源的資料,LINQ連接和IronPDF的動態雙重奏提供了一種靈活且高效的方式來增強您在C#應用程式中的PDF生成能力。

總之,C# LINQ連接操作符是無縫整合從多個來源資料的強大工具。 無論您是在處理資料庫、API響應還是記憶體中的集合,LINQ連接操作符都簡化了基於指定條件合併資料的過程。 當您在C#應用程式中導航多樣的資料連接時,請考慮LINQ連接操作符帶給您的資料整合工具包的力量和靈活性。 掌握這個操作符為有效地工作及操作資料開啟了新的可能性,增強了您的C#應用程式的能力。

IronPDF提供免費試用以供評估,以測試其完整功能。 然而,一旦試用期結束,就需要適當授權。

Jacob Mellor,首席技術官 @ Team Iron
首席技術官

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰。

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

OR
bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
預訂您的免費現場演示
Booking Badge

受到全球數百萬工程師的信任

Iron Software的客戶標誌
獲取您的無義務諮詢
填寫以下表格或電子郵件sales@ironsoftware.com
您的詳細資訊將始終保密。
受到全球數百萬工程師的信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰。
無需信用卡或帳戶建立
C# 用於PDF的NuGet程式庫
使用NuGet安裝

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解決方案資源管理器,右鍵點選參考,管理NuGet包
  2. 選擇瀏覽並搜尋"IronPdf"
  3. 選擇套件並安裝
C# PDF DLL
下載DLL

版本: 2026.9

或者點擊此處下載Windows安裝程式。

  1. 下載並解壓IronPDF到類似~/Libs的位置,位於您的解決方案目錄中
  2. 在Visual Studio解決方案資源管理器,右鍵點選參考。選擇瀏覽,"IronPdf.dll"

授權從$999起