C# Orderby(開発者向けの動作方法)
ソートはどのプログラミング言語においても基本的な操作であり、C#のOrderByメソッドはコレクション内の要素を整理するための強力なツールです。 配列、リスト、またはその他の列挙可能な構造を扱う際に、OrderByを活用する方法を理解することで、コードの可読性と機能性を大幅に向上させることができます。
この記事の後半では、Iron SoftwareのIronPDFライブラリを紹介し、LINQのOrderByメソッドとIronPDFを使用してフォーマットされたソート済みPDFを生成する方法について説明します。
LINQ OrderByメソッドとは何ですか?
OrderByメソッドはC#のLINQ(言語統合クエリ)ライブラリの一部で、要素を昇順に並べ替えるために特別に設計されています。 データをソートするデフォルトの方法であるため、昇順であることを示すキーワードは必要ありません。
LINQ OrderByメソッドの使用方法
データを昇順にソート
C#では、このメソッドを適用する方法が2つあります:メソッドシンタックスとクエリシンタックスです。 私たちは、シンプルであるためメソッドシンタックスを使用します。
var sortedCollection = collection.OrderBy(item => item.OrderByProperty);var sortedCollection = collection.OrderBy(item => item.OrderByProperty);ここで、collectionはソートしたいIEnumerableのソースコレクションであり、OrderByPropertyは、要素を並べ替えるプロパティまたは式です。 OrderBy内のラムダ式はソート基準を指定します。
データを降順にソート
降順にソートするには、メソッドベースのシンタックスを使用してOrderByDescendingメソッドを使用できます。
var sortedCollectionDesc = collection.OrderByDescending(item => item.OrderByProperty);var sortedCollectionDesc = collection.OrderByDescending(item => item.OrderByProperty);複数の基準でデータをソート
現実世界のシナリオでは、複数の基準に基づいてコレクションをソートする必要があることがよくあります。 OrderByはこれを可能にするために、複数のThenByまたはThenByDescending呼び出しをチェーンすることができます。
var multiSortedCollection = collection
.OrderBy(item => item.OrderByProperty1)
.ThenByDescending(item => item.OrderByProperty2);var multiSortedCollection = collection
.OrderBy(item => item.OrderByProperty1)
.ThenByDescending(item => item.OrderByProperty2);この例では、コレクションはまずOrderByProperty1で昇順にソートされます。 次に、OrderByProperty1値が同じ要素はOrderByProperty2で降順にソートされます。
カスタム比較子
より複雑なソート要件のために、カスタム比較子を使用することができます。 OrderByメソッドは次の例に示すようにIComparerの実装を渡すことができます。
var customSortedCollection = collection.OrderBy(item => item.Property, new CustomComparer());var customSortedCollection = collection.OrderBy(item => item.Property, new CustomComparer());ここで、CustomComparerは要素を比較するためのカスタムロジックを提供するIComparerインターフェースを実装したクラスです。
実践例:オブジェクトのソート
整数のリストをソート
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> numbers = new List<int> { 5, 2, 8, 1, 7 };
var sortedNumbers = numbers.OrderBy(num => num);
Console.WriteLine("Sorted Numbers:");
foreach (var number in sortedNumbers)
{
Console.WriteLine(number);
}
}
}using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> numbers = new List<int> { 5, 2, 8, 1, 7 };
var sortedNumbers = numbers.OrderBy(num => num);
Console.WriteLine("Sorted Numbers:");
foreach (var number in sortedNumbers)
{
Console.WriteLine(number);
}
}
}この例では、整数リストがOrderByを使用して昇順にソートされます。
文字列のリストをソート
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<string> names = new List<string> { "Alice", "Charlie", "Bob", "David" };
var sortedNames = names.OrderBy(name => name);
Console.WriteLine("Sorted Names:");
foreach (var name in sortedNames)
{
Console.WriteLine(name);
}
}
}using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<string> names = new List<string> { "Alice", "Charlie", "Bob", "David" };
var sortedNames = names.OrderBy(name => name);
Console.WriteLine("Sorted Names:");
foreach (var name in sortedNames)
{
Console.WriteLine(name);
}
}
}この例では、文字列のリストをアルファベット順に昇順でソートする方法を示します。
カスタムオブジェクトのリストをソート
using System;
using System.Linq;
using System.Collections.Generic;
class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
List<Person> people = new List<Person>
{
new Person { FirstName = "John", LastName = "Doe", Age = 30 },
new Person { FirstName = "Alice", LastName = "Smith", Age = 25 },
new Person { FirstName = "Bob", LastName = "Johnson", Age = 35 }
};
var sortedPeople = people.OrderBy(person => person.Age);
Console.WriteLine("Sorted People by Age:");
foreach (var person in sortedPeople)
{
Console.WriteLine($"{person.FirstName} {person.LastName}, Age: {person.Age}");
}
}
}using System;
using System.Linq;
using System.Collections.Generic;
class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
List<Person> people = new List<Person>
{
new Person { FirstName = "John", LastName = "Doe", Age = 30 },
new Person { FirstName = "Alice", LastName = "Smith", Age = 25 },
new Person { FirstName = "Bob", LastName = "Johnson", Age = 35 }
};
var sortedPeople = people.OrderBy(person => person.Age);
Console.WriteLine("Sorted People by Age:");
foreach (var person in sortedPeople)
{
Console.WriteLine($"{person.FirstName} {person.LastName}, Age: {person.Age}");
}
}
}この例では、カスタムPersonオブジェクトのリストがAgeプロパティに基づいて昇順にソートされます。
次の出力がコンソールに表示されます。

文字列の比較を処理する
文字列プロパティを扱う際に、大文字小文字を区別しないソートを行いたい場合があります。
var sortedPeopleByName = people.OrderBy(person => person.LastName, StringComparer.OrdinalIgnoreCase);var sortedPeopleByName = people.OrderBy(person => person.LastName, StringComparer.OrdinalIgnoreCase);この例ではStringComparer.OrdinalIgnoreCaseを使用して、LastNameプロパティに基づいた大文字小文字を無視するソートを行います。
パフォーマンスの考慮事項
LINQはコレクションをソートするための簡潔な方法を提供しますが、大規模なデータセットではパフォーマンスの影響を考慮することが重要です。 パフォーマンスが重要なシナリオでは、List.Sortメソッドを使用したインプレースでのソートのような代替案を検討することができます。
IronPDFの紹介
C# PDFライブラリ内のIronPDFの機能を発見してください。これはPDF文書の読み取りと生成を支援します。 それはスタイル情報を持つフォーマットされた文書を簡単にPDFに変換することができます。 IronPDFはHTML文字列からPDFを生成するか、URLからHTMLをダウンロードしてその後PDFを生成することができます。
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");
}
}インストール
IronPDFはNuGetパッケージマネージャコンソールを使用して、またはVisual Studioパッケージマネージャを使用してインストールできます。
Install-Package IronPdf
NuGetパッケージマネージャで"IronPDF"という名前を検索してIronPDFをインストールすることもできます。

IronPDFを使用してPDFを生成する
以下はHTML文字列とIronPDFジェネレーターを使用してPDFレポートを生成するコードです。
// See https://aka.ms/new-console-template for more information
using IronPdf;
using System;
using System.Collections.Generic;
using System.Linq;
class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
List<Person> people = new List<Person>
{
new Person { FirstName = "John", LastName = "Doe", Age = 30 },
new Person { FirstName = "Alice", LastName = "Smith", Age = 25 },
new Person { FirstName = "Bob", LastName = "Johnson", Age = 35 }
};
// Sort people by age
var sortedPeople = people.OrderBy(person => person.Age);
string name = "Sam";
var count = people.Count;
// Generate an HTML string
string content = $@"<!DOCTYPE html>
<html>
<body>
<h1>Hello, {name}!</h1>
<p>You have {count} people sorted by Age.</p>
" + string.Join("\n", sortedPeople.Select(person => $"{person.FirstName} {person.LastName}, Age: {person.Age}"))
+ @"
</body>
</html>";
// Create a new PDF document and save it
var pdfDocument = new ChromePdfRenderer();
pdfDocument.RenderHtmlAsPdf(content).SaveAs("personByAge.pdf");
}
}// See https://aka.ms/new-console-template for more information
using IronPdf;
using System;
using System.Collections.Generic;
using System.Linq;
class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
List<Person> people = new List<Person>
{
new Person { FirstName = "John", LastName = "Doe", Age = 30 },
new Person { FirstName = "Alice", LastName = "Smith", Age = 25 },
new Person { FirstName = "Bob", LastName = "Johnson", Age = 35 }
};
// Sort people by age
var sortedPeople = people.OrderBy(person => person.Age);
string name = "Sam";
var count = people.Count;
// Generate an HTML string
string content = $@"<!DOCTYPE html>
<html>
<body>
<h1>Hello, {name}!</h1>
<p>You have {count} people sorted by Age.</p>
" + string.Join("\n", sortedPeople.Select(person => $"{person.FirstName} {person.LastName}, Age: {person.Age}"))
+ @"
</body>
</html>";
// Create a new PDF document and save it
var pdfDocument = new ChromePdfRenderer();
pdfDocument.RenderHtmlAsPdf(content).SaveAs("personByAge.pdf");
}
}ここではsortedPeopleから昇順にソートされたHTML文字列を生成し、レポートに必要なすべてのフォーマットを行います。 次に、IronPDFを使用してPDFドキュメントを生成します。 RenderHtmlAsPdfメソッドを使用して、HTML文字列をPDFドキュメントに変換します。
出力
次の出力がPDFに表示されます。

ライセンス (無料トライアル利用可能)
IronPDF Trial Licenseからトライアルキーを取得できます。 このキーはappsettings.jsonに配置する必要があります。
"IronPdf.LicenseKey": "your license key"トライアルライセンスを取得するには、メールアドレスを提供してください。
結論
C#のOrderByメソッドは、さまざまな基準でコレクションをソートするための柔軟なツールです。 昇順または降順、単一または複数の基準、またはカスタム比較子を使用するかどうかにかかわらず、OrderByを習得することでコードの明快さと効率性を大幅に向上させることができます。
PDFドキュメントを生成するためのIronPDFライブラリとともに、美しくフォーマットされたソート済みのコレクションをドキュメントとして生成するための素晴らしい組み合わせです。
よくある質問
C#のOrderByメソッドはどのように機能しますか?
C#のOrderByメソッドは、LINQライブラリの一部で、コレクションの要素を昇順にソートします。メソッド構文とクエリ構文の両方で使用可能で、整数、文字列、カスタムオブジェクトを扱うのに十分汎用的です。
C#でデータを降順にソートする方法は?
C#でデータを降順にソートするには、OrderByDescendingメソッドを使用できます。これはLINQライブラリの一部で、異なるソートニーズに応じてOrderByを補完します。
C#で複数のフィールドでソートすることは可能ですか?
はい、C#ではOrderByとThenByまたはThenByDescendingを組み合わせることで複数のフィールドでソートできます。これにより、複数の属性に基づいてコレクションをソートするための複雑なソート基準が可能になります。
カスタムコンパレータとは何であり、C#のソートでどのように使用されますか?
C# におけるカスタムコンパイラーは、要素をソートする際にカスタムロジックを提供する IComparer インターフェースの実装です。これは、複雑なオブジェクトをソートする際や、デフォルトのソート動作が特定の要件を満たさない場合に便利です。
C#でIronPDFを使用してPDFを生成するにはどうすればよいですか?
C#でIronPDFを使用して、HTML文字列、ファイル、またはウェブURLからPDFを生成できます。IronPDFは元のコンテンツのレイアウトとスタイルを維持し、レポートや請求書などのプロフェッショナルなドキュメントの作成に最適です。
C#プロジェクトにIronPDFをインストールする手順は何ですか?
IronPDFはNuGetパッケージマネージャーを使用してC#プロジェクトにインストールできます。コンソールでdotnet add package IronPdfコマンドを実行するか、Visual Studioのパッケージマネージャーを使用してプロジェクトに追加できます。
IronPDFは、PDF生成のためにC#のOrderByとどのように統合されますか?
IronPDFはC#のOrderByと統合して、ソートされたフォーマットのPDFレポートを作成できます。レンダリング前にデータコレクションをOrderByでソートすることで、PDF出力がソート基準に準拠して整理されます。
IronPDFはウェブページのURLをPDFに変換できますか?
はい、IronPDFはURLからのウェブコンテンツをPDFドキュメントに変換できます。ウェブページの元のレイアウトとスタイルを維持するため、ウェブページのアーカイブや印刷可能バージョンの作成に適しています。








