.NET 幫助

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

發佈 2024年2月18日
分享:

簡介

語言集成查詢 (LINQ)C# 中的一個強大語言特性,使程式設計師能夠為各種數據來源創建清晰、表達力強的搜索。本文將討論使用 IronPDF,使用靈活的 C# 庫來處理 PDF 文件 LINQ 的 Distinct function。 我們將展示這種組合如何使從集合中創建獨特文件的過程變得更容易。 在本文中,我們將學習如何使用IronPDF來了解C# LINQ distinct function。

如何使用C# LINQ distinct方法

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

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

  3. 創建一個包含多個項目的列表。

  4. 調用 Distinct 方法。()5. 獲取唯一值並在控制台顯示結果。

  5. 處置所有創建的物件。

什麼是 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()
VB   C#

自訂相等比較器

您可以使用 Distinct 函數的重載來定義自訂相等比較。這對於想要根據特定標準來比較項目很有幫助。請參考以下示例:

var distinctPeople = people.Distinct(new PersonEqualityComparer());
var distinctPeople = people.Distinct(new PersonEqualityComparer());
Dim distinctPeople = people.Distinct(New PersonEqualityComparer())
VB   C#

使用 Distinct 與值類型

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

var distinctIntegers = integers.Distinct();
var distinctIntegers = integers.Distinct();
Dim distinctIntegers = integers.Distinct()
VB   C#

使用匿名類型的 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()
VB   C#

依特定屬性區分

在處理對象時,你可以透過自己撰寫邏輯來依某個屬性區分,或者使用來自第三方庫的 DistinctBy 擴展方法。 (喜歡更多 LINQ).

var distinctPeople = people.DistinctBy(p => p.Id);
var distinctPeople = people.DistinctBy(p => p.Id);
Dim distinctPeople = people.DistinctBy(Function(p) p.Id)
VB   C#

IronPDF

程式設計師可以使用 .NET 函式庫和 C# 語言來創建、編輯和修改 PDF 文件 IronPDF. 該程式提供一系列工具和功能,可用於處理各種PDF文件相關的任務,例如從HTML生成PDF、將HTML轉換為PDF、合併或拆分PDF文件、以及向現有的PDF中添加文字、圖片和註釋。欲了解更多關於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
VB   C#

IronPDF 的功能

  • 轉換 HTML 為 PDF:您可以使用 IronPDF 將任何種類的 HTML 資料——包括檔案、URL 和 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套件,下載並安裝到您的專案中。

使用 IronPDF 的 LINQ

考慮一種情況,其中您有一組數據,並希望根據該組中的不同值創建各種 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
VB   C#

在此範例中,透過對分類集合使用 Distinct 方法來獲得一系列不同的分類。這將幫助我們從序列中移除重複的元素。接下來,使用 IronPDF 來創建包含唯一元素的 PDF 文件。此方法保證僅為唯一的分類生成獨立的 PDF 文件。

主控台輸出

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

生成的 PDF 輸出

C# LINQ 獨特(開發人員如何運作):圖 4 - PDF 輸出:技術報告

要了解有關使用 HTML 生成 PDF 的 IronPDF 代碼範例的更多信息,請參閱 這裡.

結論

LINQ 的 Distinct 擴展方法結合 IronPDF 提供了一種穩健且高效的機制,用於基於值創建唯一的 PDF 文件。這種方法簡化了代碼,並保證了文檔生產的有效性,無論您是在處理分類、標籤或其他需要單獨文檔的數據。

通過利用 LINQ 進行數據處理和 IronPDF 進行文檔生產,您可以為管理 C# 應用程序的不同方面開發出可靠且具有表現力的解決方案。在您的項目中使用這些策略時,請記住應用程序的特定需求,並調整實施以實現最大限度的可靠性和性能。

< 上一頁
C# 內部結構(開發人員如何運作)
下一個 >
C# 優先佇列(開發者如何使用)

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >