.NET 幫助

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

發佈 2024年2月18日
分享:

介紹

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

如何使用 C# LINQ Distinct 方法

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

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

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

  4. 調用方法 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()
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

程序員可以使用 C# 語言和 .NET 庫來創建、編輯和修改 PDF 文件。IronPDF 網站. 該程式提供一系列工具和功能,以支持涉及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
VB   C#

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
VB   C#

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

控制台輸出

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

生成的PDF輸出

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

了解有關使用 HTML 生成 PDF 的 IronPDF 代碼範例的更多資訊,請參閱IronPDF HTML 轉 PDF 範例代碼.

結論

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

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

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

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

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >