C# データクラスの並び替え(ソート)

C#サンプル プログラムプログラミング
スポンサーリンク

C# サンプル プログラム一覧


データクラスの並び替えを行うサンプルです。

LINQのorderby句を使用して、下記データクラスの並び替えを行います。

並び替えを行うメソッド
メソッド 内容
OrderBy 昇順指定
OrderByDescending 降順指定
ThenBy 昇順指定(2つ目以降はこちらを指定)
ThenByDescending 降順指定(2つ目以降はこちらを指定)

昇順、降順、複数項目の並び替えを行うサンプルを作成しました。

①連番で昇順に並び替える

②連番で降順に並び替える

③連番、名前を昇順、ポイントを降順に並び替える

スポンサーリンク

プログラミング

言語:C#

using

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

データクラス

class Person
{
public int NO { get; set; } // 連番
public string Name { get; set; } // 名前
public int Point { get; set; } // ポイント
}

①連番で昇順に並び替える

// Person オブジェクトのリストを生成
List<Person> people = new List<Person>
{
new Person { NO = 2, Name = "Aさん", Point = 1 },
new Person { NO = 1, Name = "Aさん", Point = 2 },
new Person { NO = 1, Name = "Bさん", Point = 2 },
new Person { NO = 1, Name = "Bさん", Point = 1 },
new Person { NO = 1, Name = "Aさん", Point = 3 }
};

// ソート
List<Person> sortedPeople = people.OrderBy(person => person.NO) .ToList();

// 結果出力
foreach (var person in sortedPeople)
{
Console.WriteLine($"NO: {person.NO}, Name: {person.Name}, Occupation: {person.Point}");
}

実行結果

 

②連番で降順に並び替える

// Person オブジェクトのリストを生成
List<Person> people = new List<Person>
{
new Person { NO = 2, Name = "Aさん", Point = 1 },
new Person { NO = 1, Name = "Aさん", Point = 2 },
new Person { NO = 1, Name = "Bさん", Point = 2 },
new Person { NO = 1, Name = "Bさん", Point = 1 },
new Person { NO = 1, Name = "Aさん", Point = 3 }
};

// ソート
List<Person> sortedPeople = people.OrderByDescending(person => person.NO) .ToList();

// 結果出力
foreach (var person in sortedPeople)
{
Console.WriteLine($"NO: {person.NO}, Name: {person.Name}, Occupation: {person.Point}");
}

実行結果

 

③連番、名前を昇順、ポイントを降順に並び替える

// Person オブジェクトのリストを生成
List<Person> people = new List<Person>
{
new Person { NO = 2, Name = "Aさん", Point = 1 },
new Person { NO = 1, Name = "Aさん", Point = 2 },
new Person { NO = 1, Name = "Bさん", Point = 2 },
new Person { NO = 1, Name = "Bさん", Point = 1 },
new Person { NO = 1, Name = "Aさん", Point = 3 }
};

// ソート
List<Person> sortedPeople = people.OrderBy(person => person.NO)
.ThenBy(person => person.Name)
.ThenByDescending(person => person.Point)
.ToList();

// 結果出力
foreach (var person in sortedPeople)
{
Console.WriteLine($"NO: {person.NO}, Name: {person.Name}, Occupation: {person.Point}");
}

実行結果

以上です。

スポンサーリンク
タイトルとURLをコピーしました