IRONSOFTWAREHOME
開発者向けアップデート

C# LINQ Distinct(開発者向けの動作方法)

Jacob Mellor、Ironチームの最高技術責任者(CTO)
Jacob Mellor
Updated: 2026年4月21日

C# の強力な言語機能である言語統合クエリ (LINQ) により、プログラマはさまざまなデータ ソースに対して明確で表現力豊かなクエリを作成できます。 この投稿では、IronPDF の使用法について、PDF ドキュメントを操作するための多用途な C# ライブラリとともに、LINQ の Distinct 関数を使用する方法について説明します。 この組み合わせがどのようにしてコレクションからユニークなドキュメントを作成するプロセスを簡素化できるかを示します。 この記事では、IronPDFとともにC# LINQ distinct関数について学びます。

C# LINQ Distinct メソッドの使い方

  1. 新しいコンソールプロジェクトを作成します。
  2. System.Linq 名前空間をインポートします。
  3. 複数のアイテムを含むリストを作成します。
  4. リストからメソッド Distinct() を呼び出します。
  5. ユニークな値を取得し、結果をコンソールに表示します。
  6. 作成したすべてのオブジェクトを破棄します。

LINQとは何か

開発者は、C# の LINQ (Language Integrated Query) 機能を使用して、コード内で直接データ操作のための明確で表現力豊かなクエリを作成できます。 .NET Framework 3.5 に初めて含まれた LINQ は、データベースやコレクションを含むさまざまなデータ ソースのクエリを実行するための標準構文を提供します。 LINQは、Where や Select のような演算子を使用して、フィルタリングやプロジェクションのような簡単な作業を容易にし、コードの可読性を向上させます。 この機能により、最適な速度で遅延実行が可能なため、データ操作の操作が迅速かつ SQL に類似した自然な方法で完了することを保証するために、C# 開発者にとって非常に重要です。

LINQ Distinct の理解

重複した要素は、LINQの Distinct 関数を使用してコレクションまたはシーケンスから削除することができます。 カスタム等価比較子が存在しない場合、デフォルトの比較子を使用してアイテムを比較します。 ユニークなコレクションで作業し、重複を削除する際に優れた選択肢です。 Distinct 技法は、デフォルトの等価比較子を使用して値を評価します。 重複を除外して、ユニークな要素のみを返します。

基本的な使い方

異なる項目を取得するには、それを使用する最も簡単な方法は、コレクション上で直接 Distinct メソッドを使用することです。

using System.Linq;
using System.Collections.Generic;

public class DistinctExample
{
    public static void Example()
    {
        // Example list with duplicate integers
        List<int> numbers = new List<int> { 1, 2, 2, 3, 4, 4, 5 };

        // Using Distinct to remove duplicates
        var distinctNumbers = numbers.Distinct();

        // Display the distinct numbers
        foreach (var number in distinctNumbers)
        {
            Console.WriteLine(number);
        }
    }
}

カスタム等価比較者

カスタムの等価比較を定義するには、Distinct 関数のオーバーロードを使用します。 特定の基準に従ってアイテムを比較したい場合に役立ちます。 次の例を参照してください。

using System;
using System.Collections.Generic;
using System.Linq;

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class PersonEqualityComparer : IEqualityComparer<Person>
{
    public bool Equals(Person x, Person y)
    {
        return x.FirstName == y.FirstName && x.LastName == y.LastName;
    }

    public int GetHashCode(Person obj)
    {
        return obj.FirstName.GetHashCode() ^ obj.LastName.GetHashCode();
    }
}

public class DistinctCustomComparerExample
{
    public static void Example()
    {
        // Example list of people
        List<Person> people = new List<Person>
        {
            new Person { FirstName = "John", LastName = "Doe" },
            new Person { FirstName = "Jane", LastName = "Doe" },
            new Person { FirstName = "John", LastName = "Doe" }
        };

        // Using Distinct with a custom equality comparer
        var distinctPeople = people.Distinct(new PersonEqualityComparer());

        // Display distinct people
        foreach (var person in distinctPeople)
        {
            Console.WriteLine($"{person.FirstName} {person.LastName}");
        }
    }
}

値型での Distinct 使用

値型を使用する際に、Distinct メソッドを用いる場合は、カスタム等価比較を提供する必要はありません。

using System;
using System.Collections.Generic;
using System.Linq;

public class DistinctValueTypeExample
{
    public static void Example()
    {
        List<int> integers = new List<int> { 1, 2, 2, 3, 4, 4, 5 };

        // Using Distinct to remove duplicates
        var distinctIntegers = integers.Distinct();

        // Display distinct integers
        foreach (var integer in distinctIntegers)
        {
            Console.WriteLine(integer);
        }
    }
}

匿名型での Distinct 使用

Distinct は、特定の属性に基づいて重複を削除するために匿名型と共に使用されることがあります。 次の例を参照してください。

using System;
using System.Collections.Generic;
using System.Linq;

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class DistinctAnonymousTypesExample
{
    public static void Example()
    {
        List<Person> people = new List<Person>
        {
            new Person { FirstName = "John", LastName = "Doe" },
            new Person { FirstName = "Jane", LastName = "Doe" },
            new Person { FirstName = "John", LastName = "Doe" }
        };

        // Using Distinct with anonymous types
        var distinctPeople = people
            .Select(p => new { p.FirstName, p.LastName })
            .Distinct();

        // Display distinct anonymous types
        foreach (var person in distinctPeople)
        {
            Console.WriteLine($"{person.FirstName} {person.LastName}");
        }
    }
}

特定のプロパティによる Distinct

オブジェクトを扱う場合、特定の属性による区別のために独自のロジックを作成するか、サードパーティのライブラリ(MoreLINQなど)からの DistinctBy 拡張メソッドを利用することができます。

// Ensure to include the MoreLINQ Library
using MoreLinq;
using System;
using System.Collections.Generic;
using System.Linq;

public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class DistinctByExample
{
    public static void Example()
    {
        List<Person> people = new List<Person>
        {
            new Person { Id = 1, FirstName = "John", LastName = "Doe" },
            new Person { Id = 2, FirstName = "Jane", LastName = "Doe" },
            new Person { Id = 1, FirstName = "John", LastName = "Doe" }
        };

        // Using DistinctBy to filter distinct people by Id
        var distinctPeople = people.DistinctBy(p => p.Id);

        // Display distinct people
        foreach (var person in distinctPeople)
        {
            Console.WriteLine($"{person.Id}: {person.FirstName} {person.LastName}");
        }
    }
}

IronPDF

プログラマーは .NET ライブラリ IronPDF ウェブサイト の援助を得て、C# 言語で PDF ドキュメントを作成、編集、変更することができます。 このプログラムは、HTML からの PDF の生成、HTML から PDF への変換、PDF ドキュメントのマージまたは分割、既存の PDF へのテキスト、画像、注釈の追加などの PDF ファイルに関するさまざまなタスクを可能にするさまざまなツールと機能を提供します。 IronPDF について詳しくは、IronPDF ドキュメント を参照してください。

IronPDF の主な機能は、HTML から PDF への変換で、レイアウトとスタイルを保持します。 Web コンテンツから 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");
    }
}

IronPDF の機能

  • HTML から PDF への変換: IronPDF を使用して、HTML データ(ファイル、URL、および HTML コードの文字列を含む)を PDF ドキュメントに変換できます。
  • PDF 生成: C# プログラミング言語を使用して、PDF ドキュメントにテキスト、画像、およびその他の要素をプログラムで追加できます。
  • PDF 操作: IronPDF は、PDF ファイルを複数のファイルに分割したり、複数の PDF ドキュメントを 1 つのファイルにマージしたり、既存の PDF を編集したりできます。
  • PDF フォーム: このライブラリにより、PDF フォームを作成および記入でき、フォームデータを収集および処理する必要がある状況で役立ちます。
  • セキュリティ機能: IronPDF は PDF ドキュメントを暗号化し、パスワードと権限保護を提供するために使用できます。
  • テキスト抽出: PDF ファイルからテキストを抽出できます。

IronPDFをインストールする

IronPDFライブラリを取得します; プロジェクトのセットアップには必要です。 これを実現するには、次のコードを NuGet パッケージマネージャーコンソールに入力します。

PM > Install-Package IronPdf

C# LINQ Distinct (How It Works For Developers): Figure 1 - To install the IronPDF library using the NuGet Package Manager Console, enter the following command: "Install IronPDF" or ".NET add package IronPDF"

パッケージ "IronPDF" を検索するために NuGet パッケージ マネージャーを使用するという追加の選択肢があります。 IronPDF に関連するすべての NuGet パッケージのリストから、この中から必要なパッケージを選択してダウンロードできます。

C# LINQ Distinct (How It Works For Developers): Figure 2 - To install the IronPDF library using the NuGet Package Manager, search for the package "IronPDF" in the Browse tab and choose the latest version of IronPDF package to download and install in your project.

IronPDF での LINQ

特定のデータ セットを持っており、そのセット内の異なる値に基づいてさまざまな PDF ドキュメントを作成したいと考えている状況を考えてみましょう。 これは、特にIronPDFを使用してドキュメントを迅速に作成するときに、LINQの Distinct の有用性が際立つところです。

LINQ と IronPDF を使用してユニークな PDF を生成する

using IronPdf;
using System;
using System.Collections.Generic;
using System.Linq;

public class DocumentGenerator
{
    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
        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}");
    }
}

この例では、カテゴリコレクションに対して Distinct メソッドを使用して一連の異なるカテゴリを取得します。 シーケンスから重複する要素を削除するのに役立ちます。 次に、IronPDF を使用してこれらのユニークな要素で PDF ドキュメントを作成します。 この方法は、ユニークなカテゴリのみに対して個別の PDF ドキュメントが生成されることを保証します。

コンソール出力

C# LINQ Distinct(開発者向けの動作について):図3 - コンソール出力

生成された PDF 出力

C# LINQ Distinct(開発者向けの動作について):図4 - PDF出力:技術レポート

IronPDF を使用して HTML で PDF を生成するためのコード例について詳しくは、IronPDF HTML to PDF 例コード を参照してください。

結論

LINQの Distinct 拡張メソッドは、IronPDFと組み合わせて、値に基づいて一意のPDFドキュメントを作成するための強力で効率的なメカニズムを提供します。 カテゴリ、タグ、または別個のドキュメントが必要な他のあらゆるデータを処理する際に、コードを合理化し、効果的なドキュメントの作成を保証します。

データ処理に LINQ を、ドキュメント作成に IronPDF を利用することで、C# アプリケーションのさまざまな側面を管理するための信頼性が高く表現力豊かなソリューションを開発できます。 プロジェクトにこれらの戦略を使用する場合は、アプリケーションの特定のニーズを考慮し、最大限の信頼性とパフォーマンスを実現するように実装を調整してください。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

OR
bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。
PDF用C# NuGetライブラリ
NuGetでインストール

バージョン: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. ソリューションエクスプローラーで参照を右クリックし、NuGetパッケージを管理を選択
  2. ブラウズを選択し、"IronPDF"を検索
  3. パッケージを選択してインストール
C# PDF DLL
DLLをダウンロード

バージョン: 2026.9

またはここからWindowsインストーラーをダウンロードする。

  1. IronPDFを~/Libsなどの場所に解凍し、ソリューションディレクトリ内に配置する
  2. Visual Studioソリューションエクスプローラーで参照を右クリックし、"IronPDF.dll"をブラウズして選択

ライセンスは$999から