.NET 帮助

C# LINQ Distinct(开发者指南)

发布 2024年二月18日
分享:

介绍

语言集成查询(LINQ).NET、Java、Python 或 Node js 是 C# 中一种强大的语言功能,使程序员能够为各种数据源创建清晰、富有表现力的搜索。 本文章将讨论使用IronPDF使用.NET、Java、Python 或 Node js 开发 PDF 文档的通用 C# 库。LINQ 的独特之处功能。 我们将展示这种组合如何使从文集中创建独特论文的过程变得更容易。 在本文中,我们将学习使用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 区别

可以使用 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文档.

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 库,请输入以下命令:安装 IronPDF 或 dotnet add package IronPdf

使用 NuGet 软件包管理器搜索软件包 "IronPDF "是一个额外的选择。我们可以从该列表中与 IronPDF 相关的所有 NuGet 软件包中选择并下载必要的软件包。

C# LINQ Distinct(如何为开发人员工作):图 2 - 要使用 NuGet 包管理器安装 IronPDF 库,请在 浏览 选项卡中搜索包 IronPDF,然后选择最新版本的 IronPDF 包下载并安装到您的项目中。

LINQ With 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#

在本例中,通过对类别集合使用 Distinct 方法,获得了一系列不同的类别。 它将帮助我们删除序列中的重复元素。 接下来,使用 IronPDF 创建具有独特元素的 PDF 文档。 这种方法可确保只为特定类别制作单独的 PDF 文档。

控制台输出

C# LINQ Distinct(如何为开发人员工作):图 3 - 控制台输出

生成 PDF 输出

C# LINQ Distinct(如何为开发人员工作):图 4 - PDF 输出:技术报告

要了解更多关于 IronPDF 使用 HTML 生成 PDF 的代码示例,请参考IronPDF HTML 转 PDF 示例代码.

结论

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

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

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

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

免费NuGet下载 总下载量: 11,781,565 查看许可证 >