.NET 幫助

C# LINQ Distinct(開發人員如何使用)

介紹

語言整合查詢(LINQ),作為 C# 中的一個強大語言功能,使程式設計師能夠為各種資料來源建立清晰而富有表達力的查詢。 本文將討論IronPDF的使用,這是一個用於處理 PDF 文件的多功能 C# 程式庫,並使用LINQ 的 Distinct功能。 我們將展示這種組合如何使從集合中創建獨特文檔的過程變得更簡單。 在本文中,我們將學習使用 IronPDF 的 C# LINQ distinct 函數。

如何使用 C# LINQ Distinct 方法

  1. 創建一個新的控制台專案。

  2. 匯入System.Linq命名空間。

  3. 建立一個包含多個項目的清單。

  4. 從 List 呼叫方法 Distinct()

  5. 取得唯一值並在控制台上顯示結果。

  6. 處理所有建立的物件。

什麼是 LINQ

開發人員可以使用 C# 的 LINQ(語言集成查詢)功能在他們的程式碼中直接構建清晰且富有表現力的數據操作查詢。 LINQ 首次在 .NET Framework 3.5 中引入,提供了一種標準語法,可用於查詢包括資料庫和集合在內的多種資料來源。 LINQ使用像Where和Select這樣的運算子,使篩選和投影等簡單任務更加容易,從而提高代碼的可讀性。 因為它允許延遲執行以實現最佳速度,這個功能對於C#開發人員來說至關重要,以確保數據操作以類似於SQL的方式快速且自然地完成。

瞭解 LINQ Distinct

可以使用 LINQ 的 Distinct 函數從集合或序列中移除重複的元素。 如果沒有自定義相等比較器,它將使用預設比較器來比較項目。 這使它成為在需要處理獨特集合並去除重複元素的情況下的一個很好的選擇。 Distinct技術利用預設的相等比較來評估值。 它將返回 false,表示特定屬性是重複的,並根據此顯示唯一的元素。

基本用法

要獲取不同的項目,最簡單的方法是直接在集合上使用 Distinct 方法。

var distinctNumbers = numbers.Distinct();
var distinctNumbers = numbers.Distinct();
Dim distinctNumbers = numbers.Distinct()
$vbLabelText   $csharpLabel

自訂相等比較器

您可以透過重載 Distinct 函數來定義自訂的相等比較。 如果您希望根據特定標準比較項目,這會很有幫助。 請參考以下範例:

var distinctPeople = people.Distinct(new PersonEqualityComparer());
var distinctPeople = people.Distinct(new PersonEqualityComparer());
Dim distinctPeople = people.Distinct(New PersonEqualityComparer())
$vbLabelText   $csharpLabel

使用 Distinct 與數值型別

在使用 Distinct 方法處理值類型時,您不需要提供自定義的相等性比較。

var distinctIntegers = integers.Distinct();
var distinctIntegers = integers.Distinct();
Dim distinctIntegers = integers.Distinct()
$vbLabelText   $csharpLabel

使用匿名類型的 Distinct 資料指令

Distinct 可以用於匿名類型,以根據特定屬性移除重複項。 請參考以下範例:

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()
$vbLabelText   $csharpLabel

按特定屬性區分

在處理物件時,您可以自行設計邏輯來根據某一屬性進行區分,或者您可以使用第三方庫(如 More LINQ)中的 DistinctBy 擴展方法。

var distinctPeople = people.DistinctBy(p => p.Id);
var distinctPeople = people.DistinctBy(p => p.Id);
Dim distinctPeople = people.DistinctBy(Function(p) p.Id)
$vbLabelText   $csharpLabel

IronPDF

程式設計師可以使用 C# 程式語言,借助 .NET 庫 IronPDF Website 來創建、編輯和修改 PDF 文件。 該程式提供一系列工具和功能,以支持涉及PDF文件的各種任務,例如從HTML生成PDF、將HTML轉換為PDF、合併或拆分PDF文檔,以及在已有PDF中添加文字、圖片和註釋。 如需了解更多關於IronPDF的信息,請參考他們的IronPDF文件

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
$vbLabelText   $csharpLabel

IronPDF 的功能

  • 將 HTML 轉換為 PDF:您可以使用 IronPDF 將任何類型的 HTML 數據——包括文件、網址和 HTML 代碼字串——轉換為 PDF 文件。
  • PDF生成:可以使用C#編程語言以程式化方式將文字、圖像和其他元素添加到PDF文件中。
  • PDF 操作:IronPDF 可以將一個 PDF 檔案拆分成多個檔案,合併多個 PDF 文件成一個檔案,並編輯已存在的 PDF。
  • PDF 表單:由於該庫使用戶能夠構建和填寫 PDF 表單,因此在需要收集和處理表單數據的情況下非常有用。
  • 安全功能:IronPDF 可用於加密 PDF 文件,並提供密碼和權限保護。
  • 文字擷取:可以使用IronPDF從PDF檔案中擷取文字。

安裝 IronPDF

獲取 IronPDF 庫; 這是未來補丁所需的。 在 NuGet 套件管理器主控台中輸入以下代碼以完成此操作:

Install-Package IronPdf

C# LINQ Distinct (開發人員指南): 圖 1 - 要使用 NuGet 套件管理器主控台安裝 IronPDF 庫,請輸入以下命令:「Install IronPDF」或「dotnet add package IronPdf」

使用 NuGet 套件管理器搜尋套件「IronPDF」是另一個選擇。我們可以從這個列表中選擇並下載與 IronPDF 相關的所有 NuGet 套件中所需的套件。

C# LINQ Distinct(開發人員如何運作):圖 2 - 要使用 NuGet 套件管理器安裝 IronPDF 庫,請在瀏覽標籤中搜尋套件「IronPDF」,並選擇 IronPDF 套件的最新版本以下載並安裝到您的項目中。

LINQ 與 IronPDF

考慮一種情況,您有一組數據,並希望根據該組中不同的值創建各種 PDF 文件。 這就是 LINQ 的 Distinct 特別有用的地方,尤其是在搭配 IronPDF 快速建立文件時。

使用 LINQ 和 IronPDF 生成不同的 PDF

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()
    {
        // Sample data representing categories
        List<string> categories = new List<string>
        {
            "Technology",
            "Business",
            "Health",
            "Technology",
            "Science",
            "Business",
            "Health"
        };
        // Use LINQ Distinct to filter out duplicate values
        // distinct query syntax
        var distinctCategories = categories.Distinct();
        // Generate a distinct elements PDF document for each category
        foreach (var category in distinctCategories)
        {
            GeneratePdfDocument(category);
        }
    }
    private static void GeneratePdfDocument(string category)
    {
        // Create a new PDF document using IronPDF
        IronPdf.HtmlToPdf renderer = new IronPdf.HtmlToPdf();
        PdfDocument pdf = renderer.RenderHtmlAsPdf($"<h1>{category} Report</h1>");
        // Save the PDF to a file
        string pdfFilePath = $"{category}_Report.pdf";
        pdf.SaveAs(pdfFilePath);
        // Display a message with the file path
        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()
    {
        // Sample data representing categories
        List<string> categories = new List<string>
        {
            "Technology",
            "Business",
            "Health",
            "Technology",
            "Science",
            "Business",
            "Health"
        };
        // Use LINQ Distinct to filter out duplicate values
        // distinct query syntax
        var distinctCategories = categories.Distinct();
        // Generate a distinct elements PDF document for each category
        foreach (var category in distinctCategories)
        {
            GeneratePdfDocument(category);
        }
    }
    private static void GeneratePdfDocument(string category)
    {
        // Create a new PDF document using IronPDF
        IronPdf.HtmlToPdf renderer = new IronPdf.HtmlToPdf();
        PdfDocument pdf = renderer.RenderHtmlAsPdf($"<h1>{category} Report</h1>");
        // Save the PDF to a file
        string pdfFilePath = $"{category}_Report.pdf";
        pdf.SaveAs(pdfFilePath);
        // Display a message with the file path
        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()
		' Sample data representing categories
		Dim categories As New List(Of String) From {"Technology", "Business", "Health", "Technology", "Science", "Business", "Health"}
		' Use LINQ Distinct to filter out duplicate values
		' distinct query syntax
		Dim distinctCategories = categories.Distinct()
		' Generate a distinct elements PDF document for each category
		For Each category In distinctCategories
			GeneratePdfDocument(category)
		Next category
	End Sub
	Private Shared Sub GeneratePdfDocument(ByVal category As String)
		' Create a new PDF document using IronPDF
		Dim renderer As New IronPdf.HtmlToPdf()
		Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf($"<h1>{category} Report</h1>")
		' Save the PDF to a file
		Dim pdfFilePath As String = $"{category}_Report.pdf"
		pdf.SaveAs(pdfFilePath)
		' Display a message with the file path
		Console.WriteLine($"PDF generated successfully. File saved at: {pdfFilePath}")
	End Sub
End Class
$vbLabelText   $csharpLabel

在此範例中,透過對 categories 集合使用 Distinct 方法,取得一系列不同的類別。 這將幫助我們從序列中移除重複元素。 接下來,IronPDF 用於創建具有獨特元素的 PDF 文件。 此方法保證單獨的 PDF 文件僅針對唯一的類別製作。

控制台輸出

C# LINQ Distinct(它對開發者的運作方式):圖 3 - 主控台輸出

生成的PDF輸出

C# LINQ Distinct(開發人員的運作方式):圖 4 - PDF 輸出:技術報告

要了解更多關於使用HTML生成PDF的IronPDF代碼示例,請參考IronPDF HTML到PDF範例代碼

結論

LINQ 的 Distinct 擴充方法結合 IronPDF 提供了一種強大且高效的機制,根據數值創建唯一的 PDF 文件。 此方法簡化了代碼,保證了有效的文件生成,無論您是處理分類、標籤,還是其他需要單獨文件的數據。

您可以透過利用 LINQ 進行資料處理和使用 IronPDF 進行文件製作,開發出可靠且具表現力的解決方案來管理 C# 應用程式的不同方面。 在為您的專案使用這些策略時,請記住您應用程式的特殊需求,並調整實施以達到最大的可靠性和性能。

Chipego
奇佩戈·卡林达
軟體工程師
Chipego 擁有天生的傾聽技能,這幫助他理解客戶問題,並提供智能解決方案。他在獲得信息技術理學學士學位後,于 2023 年加入 Iron Software 團隊。IronPDF 和 IronOCR 是 Chipego 專注的兩個產品,但隨著他每天找到新的方法來支持客戶,他對所有產品的了解也在不斷增長。他喜歡在 Iron Software 的協作生活,公司內的團隊成員從各自不同的經歷中共同努力,創造出有效的創新解決方案。當 Chipego 離開辦公桌時,他常常享受讀好書或踢足球的樂趣。
< 上一頁
C# 內部結構(開發人員如何運作)
下一個 >
C# 優先佇列(開發者如何使用)