HOWTO · Csharp
C# のフィールドでリストを並べ替える
この記事では、C# のフィールドでリストを並べ替える方法について説明します。
この記事では、C# の Sort() 関数と LINQ の OrderBy() キーワードを使用して、リストを昇順と降順で並べ替える方法を紹介します。
まず、この例でそれらから派生した関数を使用するために必要なライブラリをインポートする必要があります。
using System;
using System.Linq;
using System.Collections.Generic;
PersonData というクラスを作成し、その中に name という変数を定義します。データ型文字列とそのコンストラクター、および入力を文字列値に変換して返すメソッドを使用します。
public class PersonData {
public string name;
public PersonData(string name) {
this.name = name;
}
public override string ToString() {
return name;
}
}
次に、PersonData データ型で 5つの変数を宣言し、それらにいくつかの文字列値を割り当てます。
PersonData tom = new PersonData("Tom");
PersonData roger = new PersonData("Roger");
PersonData fred = new PersonData("Fred");
PersonData jack = new PersonData("Jack");
PersonData anna = new PersonData("Anna");
これらのフィールドでの並べ替えを実装するには、リストを作成し、このデータをリスト mergedList に挿入する必要があります。
List<PersonData> mergedList = new List<PersonData>() { tom, roger, fred, jack, anna };
C# で Sort() メソッドを使用して Filed でリストをソートする
これは、リストを昇順で並べ替える最初の方法です。上のコードブロックで関数 Sort() を使用して定義されたリスト名を呼び出し、値を比較して昇順で並べ替える 2つの引数を渡すだけです。
mergedList.Sort((x, y) => {
int ret = String.Compare(x.name, y.name);
return ret;
});
例:
using System;
using System.Linq;
using System.Collections.Generic;
public class PersonData {
public string name;
public PersonData(string name) {
this.name = name;
}
public override string ToString() {
return name;
}
}
public class SortList {
public static void Main() {
PersonData tom = new PersonData("Tom");
PersonData roger = new PersonData("Roger");
PersonData fred = new PersonData("Fred");
PersonData jack = new PersonData("Jack");
PersonData anna = new PersonData("Anna");
List<PersonData> mergedList = new List<PersonData>() { tom, roger, fred, jack, anna };
mergedList.Sort((x, y) => {
int ret = String.Compare(x.name, y.name);
return ret;
});
Console.WriteLine(String.Join(Environment.NewLine, mergedList));
}
}
リストの並べ替え前の出力:
Tom
Roger
Fred
Jack
Anna
リストの並べ替え後の出力:
Anna
Fred
Jack
Roger
Tom
リストを昇順で並べ替えたら、メソッド Reverse() を呼び出して降順で並べ替えることができます。
mergedList.Reverse();
降順でのリストの出力は次のとおりです。
Tom
Roger
Jack
Fred
Anna
C# で OrderBy() メソッドを使用してファイルされたリストを並べ替える
これは、リストを昇順で並べ替える別の方法です。OrderBy() メソッドを使用し、値をチェックして昇順で並べ替える引数を指定することにより、前のコードブロックで作成されたリスト名を呼び出すだけです。
構文:
List<PersonData> sortedList = mergedList.OrderBy(x => x.name).ToList();
例:
using System;
using System.Linq;
using System.Collections.Generic;
public class PersonData {
public string name;
public PersonData(string name) {
this.name = name;
}
public override string ToString() {
return name;
}
}
public class SortList {
public static void Main() {
PersonData tom = new PersonData("Tom");
PersonData roger = new PersonData("Roger");
PersonData fred = new PersonData("Fred");
PersonData jack = new PersonData("Jack");
PersonData anna = new PersonData("Anna");
List<PersonData> mergedList = new List<PersonData>() { tom, roger, fred, jack, anna };
List<PersonData> sortedList = mergedList.OrderBy(x => x.name).ToList();
Console.WriteLine(String.Join(Environment.NewLine, sortedList));
}
}
リストの出力- 並べ替え前:
Tom
Roger
Fred
Jack
Anna
リストの出力 - 並べ替え後:
Anna
Fred
Jack
Roger
Tom
このリストを降順で並べ替えるには、次のようにリストを昇順で並べ替えた後、関数 Reverse() を呼び出すだけです。
List<PersonData> sortedList = mergedList.OrderBy(x => x.name).ToList();
sortedList.Reverse();
降順でのリストの出力は次のとおりです。
Tom
Roger
Jack
Fred
Anna