データクラスの並び替えを行うサンプルです。
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}");
}
実行結果
以上です。