C#でコレクションを昇順または降順に並び替える
C#の自作クラスのコレクションを、特定のプロパティをキーにして並び替えてみました。
目次
試してみた
自作のクラス(Hoge)のコレクション(Piyo)に下図のデータを入れて、LINQで並び替えた後にコンソールに出力してみました。
コレクションの中身はこれです。
コードはこうしました。
using System;
using System.Linq;
using System.Collections.ObjectModel;
namespace trial_orderby
{
class Program
{
static void Main(string[] args)
{
// 並び替えられるコレクションを作る
Collection<Hoge> Piyo = new Collection<Hoge>();
Hoge temp1 = new Hoge();
temp1.Id = 1;
temp1.Name = "Windows";
Piyo.Add(temp1);
Hoge temp2 = new Hoge();
temp2.Id = 2;
temp2.Name = "Linux";
Piyo.Add(temp2);
Hoge temp3 = new Hoge();
temp3.Id = 3;
temp3.Name = "Mac";
Piyo.Add(temp3);
Hoge temp4 = new Hoge();
temp4.Id = 4;
temp4.Name = "Android";
Piyo.Add(temp4);
Hoge temp5 = new Hoge();
temp5.Id = 5;
temp5.Name = "MSX";
Piyo.Add(temp5);
// 方向を省略した並び替え
var query1 = from p in Piyo
orderby p.Name
select p;
foreach(var q in query1)
{
Console.WriteLine(q.Id.ToString() + " : " + q.Name);
}
// 昇順で並び替え
Console.WriteLine("\nAscending : ");
var query2 = from p in Piyo
orderby p.Name ascending
select p;
foreach (var q in query2)
{
Console.WriteLine(q.Id.ToString() + " : " + q.Name);
}
// 降順で並び替え
Console.WriteLine("\nDescending : ");
var query3 = from p in Piyo
orderby p.Name descending
select p;
foreach (var q in query3)
{
Console.WriteLine(q.Id.ToString() + " : " + q.Name);
}
}
}
public class Hoge
{
public int Id { get; set; }
public string Name { get; set; }
}
}
単純ですね。
foreach内のConsole.WriteLineで出力している部分を、ソート先のデータを格納するコレクションにaddするようにすれば、できあがりです。
出力はこうなります。
きちんとソートされてますね。
公開日
広告
C#でデータ処理カテゴリの投稿
- C#でDataAdapterを使ってAccessのデータベースを読み書きしてみた
- C#でDataAdapterを使ってAccessのデータベースを読み書きしてみた(OleDb編)
- C#でDataGridに表示するデータを操作してみた
- C#でDataTableのカラムのデータ型を読んでみた
- C#でDataTableの自動インクリメントをしてみた
- C#でJSON形式のデータを出力してみた
- C#でLinq to objectの結果をDataTableにしてみた
- C#でSQLite3のデータベースを使ってみる(ADO.NET ファクトリーデザインパターン)
- C#でSQLiteを使ってみる(インストール)
- C#でコレクションの要素の数を調べる
- C#でコレクションを内部結合してみた
- C#でコレクションを左外部結合してみた
- C#でコレクションを昇順または降順に並び替える
- C#で渡された配列を加工して配列で返す関数について注意すること
- C#のキューを試してみた
- C#のスタックを試してみた