2010年08月31日(火)

C# 自作クラスをListに入れておいてソート(並び替え)するには

テーマ:C#


自作クラスをListで管理することがよくあるのですが
それを、ある値で昇順にしたかったりということがあります。
で、どうやって並び替えようかと思っていたところ、こんなのがありました。


 List<int> listTest = new List<int>();
 listTest.Add(3);
 listTest.Add(1);
 listTest.Add(4);


上記のListであれば


 listTest.Sort();


とすれば昇順になります。


でも、これを降順にするには・・?
そしてさらに自作クラスの場合は?となるわけです。


降順にするにはこう記述します。

 listTest.Sort(delegate(int a, int b){ return b - a; });


自作クラスも、これと同様にすることができます。
例えば以下のようなクラスがあったとします。
------------------
class MyClassA
{
  private int age;   //年齢
  private string name; //名前

  public int Age
  {
    get{ return age; }
    set{ age = value; }
  }
  public string Name
  {
    get{ return name; }
    set{ name = value; }
  }

}
------------------

それがリストに入っていたとします。
List<MyClassA> listMyClass = new List<MyClassA>();
   :
   :
   :


年齢昇順
 listMyClassA.Sort(delegate(MyClassA mca1, MyClassA mca2){ return mca1.Age - mca2.Age; });

年齢降順
 listMyClassA.Sort(delegate(MyClassA mca1, MyClassA mca2){ return mca2.Age - mca1.Age; });


名前昇順
 listMyClass.Sort(delegate(MyClassA mca1, MyClassA mca2) { return string.Compare(mca1.Name, mca2.Name); });

名前降順
 listMyClass.Sort(delegate(MyClassA mca1, MyClassA mca2) { return string.Compare(mca2.Name, mca1.Name); });


というわけです。
ちなみに、2.0からの機能だそうです。
自分でソートプログラムを作らなくていいなんて便利ですね。


AD
いいね!した人  |  コメント(0)  |  リブログ(0)

55さんの読者になろう

ブログの更新情報が受け取れて、アクセスが簡単になります

コメント

[コメントをする]

コメント投稿

AD

ブログをはじめる

たくさんの芸能人・有名人が
書いているAmebaブログを
無料で簡単にはじめることができます。

公式トップブロガーへ応募

多くの方にご紹介したいブログを
執筆する方を「公式トップブロガー」
として認定しております。

芸能人・有名人ブログを開設

Amebaブログでは、芸能人・有名人ブログを
ご希望される著名人の方/事務所様を
随時募集しております。