C# Array Sort (開発者向けの仕組み)
配列は C# プログラミングにおいて重要な役割を果たし、データ コレクションを保存および操作する便利な方法を提供します。 配列を扱う際の基本的な操作の 1 つはソートであり、この記事では C# でソート済み配列を作成する複数の方法について説明します。 最後までには、配列ソートの基本を理解するだけでなく、C# が提供する強力なソート機能を活用する方法も発見します。
配列の基本を理解する
ソートに進む前に、C# での配列の基本を再確認しましょう。 配列は、同じデータ型の要素を連続したメモリ位置に格納するコレクションです。 それらは、インデックス表記を使用して要素にアクセスする効率性を提供します。
最も簡単な方法: Array.Sort()
C# は指定された配列メソッド、Sort() を使用して配列を簡単にソートします。 このメソッドは多用途であり、さまざまなデータ型の配列要素に使用できます。ここに 1 次元配列を使用した簡単な例があります。
int[] numbers = { 5, 2, 8, 1, 7 };
Array.Sort(numbers);Dim numbers() As Integer = { 5, 2, 8, 1, 7 }
Array.Sort(numbers)Dim numbers() As Integer = { 5, 2, 8, 1, 7 }
Array.Sort(numbers)上記のコードは配列要素を昇順にソートし、結果は { 1, 2, 5, 7, 8 } となります。
IComparer を使用したカスタムソート
シンプルなシナリオでは Array.Sort() メソッドが便利ですが、カスタムのソート順が必要な状況に直面する可能性があります。 ここで IComparer インターフェースが役立ちます。 このインターフェースを実装することで、配列をソートするために使用される比較ロジックを定義できます。
using System.Collections;
class CustomComparer : IComparer
{
public int Compare(object x, object y)
{
int a = (int)x;
int b = (int)y;
// Compare a and b to order them descending
return b.CompareTo(a);
}
}
int[] numbers = { 5, 2, 8, 1, 7 };
Array.Sort(numbers, new CustomComparer());using System.Collections;
class CustomComparer : IComparer
{
public int Compare(object x, object y)
{
int a = (int)x;
int b = (int)y;
// Compare a and b to order them descending
return b.CompareTo(a);
}
}
int[] numbers = { 5, 2, 8, 1, 7 };
Array.Sort(numbers, new CustomComparer());Imports System.Collections
Friend Class CustomComparer
Implements IComparer
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
Dim a As Integer = DirectCast(x, Integer)
Dim b As Integer = DirectCast(y, Integer)
' Compare a and b to order them descending
Return b.CompareTo(a)
End Function
End Class
Private numbers() As Integer = { 5, 2, 8, 1, 7 }
Array.Sort(numbers, New CustomComparer())Imports System.Collections
Friend Class CustomComparer
Implements IComparer
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
Dim a As Integer = DirectCast(x, Integer)
Dim b As Integer = DirectCast(y, Integer)
' Compare a and b to order them descending
Return b.CompareTo(a)
End Function
End Class
Private numbers() As Integer = { 5, 2, 8, 1, 7 }
Array.Sort(numbers, New CustomComparer())オブジェクトのソート: IComparable と IComparer
カスタムオブジェクトの配列をソートするには、IComparable インターフェースを実装するか、オブジェクトのソートに IComparer を使用する必要があります。 これにより、ソートアルゴリズムがオブジェクトの比較ルールを理解できるようになります。 次のコードは、Person オブジェクトの配列を年齢に基づいて並べ替えるロジックを示しています。
using System;
class Person : IComparable<Person>
{
public string Name { get; set; }
public int Age { get; set; }
public int CompareTo(Person other)
{
// Compare Persons by age
return this.Age.CompareTo(other.Age);
}
}
// Array of people
Person[] people =
{
new Person { Name = "Alice", Age = 30 },
new Person { Name = "Bob", Age = 25 }
};
// Sort by age
Array.Sort(people);using System;
class Person : IComparable<Person>
{
public string Name { get; set; }
public int Age { get; set; }
public int CompareTo(Person other)
{
// Compare Persons by age
return this.Age.CompareTo(other.Age);
}
}
// Array of people
Person[] people =
{
new Person { Name = "Alice", Age = 30 },
new Person { Name = "Bob", Age = 25 }
};
// Sort by age
Array.Sort(people);Imports System
Friend Class Person
Implements IComparable(Of Person)
Public Property Name() As String
Public Property Age() As Integer
Public Function CompareTo(ByVal other As Person) As Integer Implements IComparable(Of Person).CompareTo
' Compare Persons by age
Return Me.Age.CompareTo(other.Age)
End Function
End Class
' Array of people
Private people() As Person = {
New Person With {
.Name = "Alice",
.Age = 30
},
New Person With {
.Name = "Bob",
.Age = 25
}
}
' Sort by age
Array.Sort(people)Imports System
Friend Class Person
Implements IComparable(Of Person)
Public Property Name() As String
Public Property Age() As Integer
Public Function CompareTo(ByVal other As Person) As Integer Implements IComparable(Of Person).CompareTo
' Compare Persons by age
Return Me.Age.CompareTo(other.Age)
End Function
End Class
' Array of people
Private people() As Person = {
New Person With {
.Name = "Alice",
.Age = 30
},
New Person With {
.Name = "Bob",
.Age = 25
}
}
' Sort by age
Array.Sort(people)Array.Reverse(): 順序の反転
配列をソートした後、順序を反転させる必要があるかもしれません。 C# はその目的に正確に Array.Reverse() メソッドを提供します。
int[] numbers = { 1, 2, 3, 4, 5 };
Array.Reverse(numbers);int[] numbers = { 1, 2, 3, 4, 5 };
Array.Reverse(numbers);Dim numbers() As Integer = { 1, 2, 3, 4, 5 }
Array.Reverse(numbers)Dim numbers() As Integer = { 1, 2, 3, 4, 5 }
Array.Reverse(numbers)これで、numbers 配列は { 5, 4, 3, 2, 1 } になります。
LINQを活用する
より宣言的なスタイルで配列をソートしたい人のために、LINQ (Language Integrated Query) を使用して配列をソートすることもできます。 OrderBy メソッドを使用して昇順にソートし、OrderByDescendingメソッドを使用して降順にソートできます。 これらのメソッドは、ソートを実現するための簡潔な方法を提供します。 次の例では、LINQ クエリ構文を使用しています。
using System.Linq;
int[] numbers = { 5, 2, 8, 1, 7 };
var sortedNumbers = numbers.OrderBy(x => x).ToArray();using System.Linq;
int[] numbers = { 5, 2, 8, 1, 7 };
var sortedNumbers = numbers.OrderBy(x => x).ToArray();Imports System.Linq
Private numbers() As Integer = { 5, 2, 8, 1, 7 }
Private sortedNumbers = numbers.OrderBy(Function(x) x).ToArray()Imports System.Linq
Private numbers() As Integer = { 5, 2, 8, 1, 7 }
Private sortedNumbers = numbers.OrderBy(Function(x) x).ToArray()IronPDFの紹介

IronPDF についてさらに知る は、HTML から直接 PDF ドキュメントの作成、修正、および操作を簡素化する強力な C# ライブラリです。 レポートや請求書、その他の動的なコンテンツを生成するかどうかにかかわらず、IronPDF はシームレスなソリューションを提供し、PDF 関連のタスクに C# の力を活かすことができます。
IronPDF は、ウェブページと HTML を PDF に変換し、元の書式を保持します。 .NET プロジェクトにシームレスに統合でき、開発者は 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 ClassImports 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 ClassIronPDFのインストール:クイックスタート
C# プロジェクトで IronPDF を活用するには、IronPDF NuGet パッケージを簡単にインストールできます。 パッケージマネージャーコンソールで以下のコマンドを使用してください:
または、NuGetパッケージマネージャーで"IronPDF"を検索し、そこからインストールすることも可能です。

IronPDFでPDFを生成する
IronPDF を使用した PDF の作成は簡単です。 IronPDF を使用した HTML 文字列 から PDF を作成する簡単な例を考えてみましょう。
var htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>";
// Create a new PDF document
var pdfDocument = new IronPdf.ChromePdfRenderer();
pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("GeneratedDocument.pdf");var htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>";
// Create a new PDF document
var pdfDocument = new IronPdf.ChromePdfRenderer();
pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("GeneratedDocument.pdf");Dim htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>"
' Create a new PDF document
Dim pdfDocument = New IronPdf.ChromePdfRenderer()
pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("GeneratedDocument.pdf")Dim htmlContent = "<html><body><h1>Hello, IronPDF!</h1></body></html>"
' Create a new PDF document
Dim pdfDocument = New IronPdf.ChromePdfRenderer()
pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("GeneratedDocument.pdf")この例では、IronPDF を使用して HTML コンテンツを PDF ドキュメントにレンダリングしました。 生成された PDF "GeneratedDocument.pdf" は、指定された場所に保存されます。 PDF の生成方法についての詳細情報は、IronPDF ドキュメント ページをご覧ください。
IronPDF を使用した配列ソート
ここで疑問が生じますが、先に触れた配列ソート技術を IronPDF とシームレスに統合できるでしょうか? 答えははいです。
データを PDF に表形式で提示したい場合のシナリオを考えてみましょう。 配列ソートを活用して、PDF を生成する前にデータを整理し、より構造化され、ユーザー フレンドリーな出力を確保できます。
using System.Linq;
// Sample array of data
string[] names = { "Alice", "Charlie", "Bob", "David" };
// Sorting the array alphabetically
Array.Sort(names);
// Generating PDF content with sorted data
var sortedPdfContent = $@"
<html>
<body>
<h1>Sorted Names</h1>
<ul>
{string.Join("", names.Select(name => $"<li>{name}</li>"))}
</ul>
</body>
</html>
";
// Create a new PDF document with sorted data
var sortedPdfDocument = new IronPdf.ChromePdfRenderer();
sortedPdfDocument.RenderHtmlAsPdf(sortedPdfContent).SaveAs("SortedNames.pdf");using System.Linq;
// Sample array of data
string[] names = { "Alice", "Charlie", "Bob", "David" };
// Sorting the array alphabetically
Array.Sort(names);
// Generating PDF content with sorted data
var sortedPdfContent = $@"
<html>
<body>
<h1>Sorted Names</h1>
<ul>
{string.Join("", names.Select(name => $"<li>{name}</li>"))}
</ul>
</body>
</html>
";
// Create a new PDF document with sorted data
var sortedPdfDocument = new IronPdf.ChromePdfRenderer();
sortedPdfDocument.RenderHtmlAsPdf(sortedPdfContent).SaveAs("SortedNames.pdf");Imports System.Linq
' Sample array of data
Private names() As String = { "Alice", "Charlie", "Bob", "David" }
' Sorting the array alphabetically
Array.Sort(names)
' Generating PDF content with sorted data
, String.Join(TangibleTstring.Format(mpVerbatimDoubleQuote, names.Select(Function(name) $TangibleTempVerbatimCloseTag"<li>{name}</li>")), TangibleStringInterpolationMarker)var sortedPdfContent = $"TangibleTempVerbatimOpenTagTangibleTempVerbatimStringLiteralLineJoin <html>TangibleTempVerbatimStringLiteralLineJoin <body>TangibleTempVerbatimStringLiteralLineJoin <h1>Sorted Names</h1>TangibleTempVerbatimStringLiteralLineJoin <ul>TangibleTempVerbatimStringLiteralLineJoin {0}ignoreignoreignoreignoreignore</ul></body></html>"
' Create a new PDF document with sorted data
Dim sortedPdfDocument = New IronPdf.ChromePdfRenderer()
sortedPdfDocument.RenderHtmlAsPdf(sortedPdfContent).SaveAs("SortedNames.pdf")Imports System.Linq
' Sample array of data
Private names() As String = { "Alice", "Charlie", "Bob", "David" }
' Sorting the array alphabetically
Array.Sort(names)
' Generating PDF content with sorted data
, String.Join(TangibleTstring.Format(mpVerbatimDoubleQuote, names.Select(Function(name) $TangibleTempVerbatimCloseTag"<li>{name}</li>")), TangibleStringInterpolationMarker)var sortedPdfContent = $"TangibleTempVerbatimOpenTagTangibleTempVerbatimStringLiteralLineJoin <html>TangibleTempVerbatimStringLiteralLineJoin <body>TangibleTempVerbatimStringLiteralLineJoin <h1>Sorted Names</h1>TangibleTempVerbatimStringLiteralLineJoin <ul>TangibleTempVerbatimStringLiteralLineJoin {0}ignoreignoreignoreignoreignore</ul></body></html>"
' Create a new PDF document with sorted data
Dim sortedPdfDocument = New IronPdf.ChromePdfRenderer()
sortedPdfDocument.RenderHtmlAsPdf(sortedPdfContent).SaveAs("SortedNames.pdf")この例では、HTML コンテンツに組み込む前に、名前の配列がアルファベット順に並べ替えられています。 生成された PDF "SortedNames.pdf" には、名前が並べ替えられた順序で表示されます。

結論
結論として、C# で配列ソートを習得することは効率的なデータ操作に不可欠です。 単純な数値配列または複雑なオブジェクトを扱うかにかかわらず、C# はあなたのソートニーズを満たすさまざまなツールを提供します。 Array.Sort() の基本を理解し、IComparer でカスタムソートを行い、より表現力のあるアプローチのために LINQ を活用することにより、C# プロジェクトで配列を効率的かつ優雅に扱うことができます。
IronPDF を C# プロジェクトに統合することで、強力な PDF 生成ツールを提供するだけでなく、配列ソートをドキュメント作成ワークフローにシームレスに統合できます。 表形式データを整理する場合でも動的なレポートを作成する場合でも、配列ソートと IronPDF の相乗効果により、C# でのドキュメント生成機能を強化できます。 したがって、C# 配列でのソートの力を活用し、プログラミングの腕前を向上させましょう!
IronPDF は、その完全な機能を商用利用で試用するための無料トライアルライセンスを提供します。 永続的な商用ライセンスは$999から始まります。
ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。