.NET ヘルプ

C# 配列のソート(開発者向けの仕組み)

公開済み 2024年1月27日
共有:

配列はC#プログラミングにおいて重要な役割を果たしており、データのコレクションを保存および操作するための便利な方法を提供します。 配列を扱う際の基本的な操作の一つはソートです。この記事では、C#でソートされた配列を作成する複数の方法を探ります。 最後までには、基本的な概念だけでなく配列のソート、C#が提供する強力なソート機能を活用する方法も発見しましょう。

配列の基本を理解する

並び替えに入る前に、C#の配列の基本に立ち返りましょう。 配列は、連続するメモリ位置に格納された、同じデータ型の要素の集合です。 これらはインデックス記法を使用して要素にアクセスする効率性を提供します。

最も簡単な方法:Array.Sort()

C#では、指定された配列メソッドである Sort を使用して配列のソートを簡単に行うことができます。()**. このメソッドは汎用性が高く、さまざまなデータ型の配列要素と一緒に使用できます。以下に、一次元配列を使用した簡単な例を示します:

int [] numbers = { 5, 2, 8, 1, 7 };
Array.Sort(numbers);
int [] numbers = { 5, 2, 8, 1, 7 };
Array.Sort(numbers);
Dim numbers() As Integer = { 5, 2, 8, 1, 7 }
Array.Sort(numbers)
VB   C#

上記のコードは配列要素を昇順に並び替えます。{1、2、5、7、8}.

カスタムソート IComparer を使用

Array.Sort() メソッドはシンプルなシナリオに便利ですが、カスタムソート順が必要な状況に遭遇するかもしれません。 これはIComparer**インターフェースが役割を果たすところです。 このインターフェースを実装することで、配列をソートするために使用される比較ロジックを定義することができます。

class CustomComparer : IComparer<int>
{
    public int Compare(int x, int y)
    {
        // Your custom comparison logic here
        return x.CompareTo(y); // Compares the first element with the next element
    }
}

int [] numbers = { 5, 2, 8, 1, 7 };
Array.Sort(numbers, new CustomComparer());
class CustomComparer : IComparer<int>
{
    public int Compare(int x, int y)
    {
        // Your custom comparison logic here
        return x.CompareTo(y); // Compares the first element with the next element
    }
}

int [] numbers = { 5, 2, 8, 1, 7 };
Array.Sort(numbers, new CustomComparer());
Friend Class CustomComparer
	Implements IComparer(Of Integer)

	Public Function Compare(ByVal x As Integer, ByVal y As Integer) As Integer Implements IComparer(Of Integer).Compare
		' Your custom comparison logic here
		Return x.CompareTo(y) ' Compares the first element with the next element
	End Function
End Class

Private numbers() As Integer = { 5, 2, 8, 1, 7 }
Array.Sort(numbers, New CustomComparer())
VB   C#

オブジェクトのソート: IComparable および IComparer

カスタムオブジェクトの配列をソートするには、IComparable インターフェイスを実装するか、IComparer を使用する必要があります。** オブジェクトを並べ替えるための。 これは、ソートアルゴリズムがオブジェクトの比較ルールを理解することを可能にします。 以下のコードは、年齢に基づいて Person オブジェクトの元の配列をソートするロジックを示しています:

class Person : IComparable<Person>
{
    public string Name { get; set; }
    public int Age { get; set; }

    public int CompareTo(Person other)
    {
        return this.Age.CompareTo(other.Age);
    }
}

Person [] people = { /* populate with Person objects */ };
Array.Sort(people);
class Person : IComparable<Person>
{
    public string Name { get; set; }
    public int Age { get; set; }

    public int CompareTo(Person other)
    {
        return this.Age.CompareTo(other.Age);
    }
}

Person [] people = { /* populate with Person objects */ };
Array.Sort(people);
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
		Return Me.Age.CompareTo(other.Age)
	End Function
End Class

Private people() As Person = { }
Array.Sort(people)
VB   C#

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)
VB   C#

さて、numbers 配列は{5,4,3,2,1}.

LINQを活用する

配列をソートするためにより宣言的なスタイルを好む方のために、LINQ(言語統合クエリ (Language Integrated Query))配列をソートするためにも使用できます。 OrderBy メソッドを使用して昇順に並べ替えることができ、OrderByDescending メソッドを使用して降順に並べ替えることができます。 これらのメソッドは、ソートを達成するための簡潔な方法を提供します。 以下の例では LINQ クエリ構文 を使用します:

int [] numbers = { 5, 2, 8, 1, 7 };
var sortedNumbers = numbers.OrderBy(x => x);
int [] numbers = { 5, 2, 8, 1, 7 };
var sortedNumbers = numbers.OrderBy(x => x);
Dim numbers() As Integer = { 5, 2, 8, 1, 7 }
Dim sortedNumbers = numbers.OrderBy(Function(x) x)
VB   C#

IronPDFの紹介

C# 配列ソート (開発者向けの動作方法): 図 1 - IronPDFウェブページ

IronPDFについてもっと知るHTMLから直接PDFドキュメントを作成、修正、操作するための堅牢なC#ライブラリです。 レポート、請求書、その他の動的コンテンツを生成する場合でも、IronPDFは円滑なソリューションを提供し、C#の力を活用してPDF関連のタスクをこなすことができます。

IronPDFのインストール: クイックスタート

お使いのC#プロジェクトでIronPDFを活用し始めるには、簡単にIronPDFのNuGetパッケージをインストールできます。 次のコマンドをパッケージ マネージャー コンソールで使用してください:

Install-Package IronPdf

または、NuGetパッケージマネージャーで「IronPDF」を検索し、そこからインストールすることもできます。

C# 配列のソート(開発者向けの仕組み):図2 - NuGet パッケージ マネージャーで IronPDF パッケージを参照する

IronPDFでPDFを生成する

IronPDFを使用してPDFを作成するのは簡単です。 次の例を見てみましょう。PDFを作成する場合:IronPDFを使用したHTML文字列:

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")
VB   C#

この例では、IronPDF を使用して HTML コンテンツを PDF ドキュメントに変換しました。 指定された場所に生成されたPDF「GeneratedDocument.pdf」が保存されます。 PDFの生成方法に関する詳細情報については、以下をご覧ください**IronPDFドキュメントページ

IronPDFを使用した配列のソート

さて、ここで問題が生じます。先ほど探求した配列のソート技術をIronPDFとシームレスに統合することは可能でしょうか? 答えははいです。

データの配列を持っており、それをPDFで表形式で表示したいシナリオを考えてみてください。 PDFを生成する前に配列のソートを利用してデータを整理し、より構造化され使いやすい出力を確保することができます。

// 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");
// 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");
' Sample array of data
Dim 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")
VB   C#

この例では、配列の名前がアルファベット順に並べ替えられてから、HTML コンテンツに組み込まれます。 作成されたPDF「SortedNames.pdf」には、名前がソートされた順序で表示されます。

C# 配列ソート(開発者向けの仕組み):図 3 - 前のコードのPDF出力

結論

結論として、C#での配列ソートをマスターすることは、効率的なデータ操作に不可欠です。 シンプルな数値配列や複雑なオブジェクトを扱う場合でも、C# は多様なツールを提供しており、ソートのニーズを満たすことができます。 配列をソートする基本を理解することによって()カスタムソートには IComparer を使用し、より表現力豊かなアプローチを取るために LINQ を利用することで、C# プロジェクト内の配列を効率的かつエレガントに扱うことができます。

IronPDFをC#プロジェクトに統合することで、強力なPDF生成ツールを提供するだけでなく、ドキュメント作成ワークフローに配列ソートをシームレスに統合することもできます。 表形式のデータを整理する場合でも、動的なレポートを作成する場合でも、配列ソートとIronPDFのシナジーにより、C#でのドキュメント生成能力を向上させることができます。 では、C#の配列でソートの力を活用し、プログラミングの腕前を高めましょう。!

IronPDFは無料試用ライセンスその完全な機能を商業利用のためにテストする。 永久の**商用ライセンス$749 から始めます。

< 以前
C# yield return (開発者向けの仕組み)
次へ >
Jquery Datatable(開発者向けの動作方法)