Listの並び替え

   2015/08/04

C#でListの並び替えを行う際の定番の方法は、

詰め替え用のオブジェクトをもう一つ用意して

forループの中で値の比較を行い、詰め替えを行うことです。


ここでは、Array.Sortメソッドを使って、任意の方法で並び替えを行う方法をご紹介します。


並びえるオブジェクトは

List<Dictionary<string,object>>です。

特定のキーの値によって並び替えを行います。

htmlList.Sort(delegate(Dictionary<string, object> a1, Dictionary<string, object> a2)
{
    return
        CommonUtility.Convert.ConvertUtility.ConvertStringZeroToInt(a1["Order"]) -
        CommonUtility.Convert.ConvertUtility.ConvertStringZeroToInt(a2["Order"]);
});

sortメソッドの内部をdelegateで定義することで、

任意の比較ルールを各レコードの比較に適用します。


CommonUtility.Convert.ConvertUtility.ConvertStringZeroToInt は自社共通関数で、

値を数値に変換するものです。

"Order"というキーの値順に並び替えを行います。


内部的にはループをまわして処理をしていると思われますが、

割と簡単に書けますし、delegate利用の勉強にもなります。

  • ブログランキング・にほんブログ村へ
  • FC2ブログランキングへ
  • 人気ブログランキングへ
  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る