.NET 帮助

C# LINQ Distinct(开发者指南)

发布 2024年二月18日
分享:

简介

语言集成查询 (LINQ)是 C# 中一项强大的语言功能,它使程序员能够为各种数据源创建清晰、富有表现力的搜索。本篇文章将讨论如何使用 IronPDF是一个灵活的 C# 库,用于处理 PDF 文档,使用 LINQ 的独特之处 功能。我们将展示这种组合如何使从集合中创建唯一论文的过程变得更容易。在本文中,我们将通过 IronPDF 学习 C# LINQ distinct 函数。

如何使用 C#LINQ 独特方法

1.创建一个新的控制台项目。

2.导入 System.Linq 命名空间。

3.创建一个包含多个项目的列表。

4.调用方法 `Distinct()从名单中选出。

5.获取唯一值并将结果显示在控制台上。

6.处理所有创建的对象。

什么是 LINQ

开发人员可以使用 C# 的 LINQ 直接在代码中为数据处理建立清晰而富有表现力的查询 (语言综合查询) 特点LINQ 首次出现在.NET Framework 3.5 中,为查询包括数据库和集合在内的一系列数据源提供了标准语法。通过使用 Where 和 Select 等操作符,LINQ 使过滤和投影等简单任务变得更容易,从而提高了代码的可读性。由于 LINQ 允许延迟执行以获得最佳速度,因此该功能对于 C# 开发人员来说至关重要,可确保以类似于 SQL 的方式快速、自然地完成数据操作。

了解 LINQ 区别

使用 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 Distinct(如何为开发人员工作):图 4 - PDF 输出:技术报告

要进一步了解使用 HTML 生成 PDF 的 IronPDF 代码示例,请参阅 这里.

结论

LINQ 的 Distinct 扩展方法与 IronPDF 结合使用,提供了一种基于值创建唯一 PDF 文档的强大而高效的机制。无论您处理的是类别、标签还是任何其他需要单独文档的数据,该方法都能简化代码并确保有效的文档制作。

通过利用 LINQ 进行数据处理和利用 IronPDF 制作文档,您可以为管理 C# 应用程序的不同方面开发出一种可靠而富有表现力的解决方案。在您的项目中使用这些策略时,请牢记您应用程序的特殊需求,并调整实现方式,以达到最大的可靠性和性能。

< 前一页
C# 内部实现(开发者如何使用)
下一步 >
C# 优先队列(它是如何为开发人员工作的)

准备开始了吗? 版本: 2024.9 刚刚发布

免费NuGet下载 总下载量: 10,746,704 查看许可证 >