• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C# ArrayList内の要素の並べ替え。)

C# ArrayList内の要素の並べ替え

このQ&Aのポイント
  • C#についての質問です。ArrayListを用いた情報管理リストのプログラムにソート機能を実装したいです。特定のフィールドを基準に昇順または降順にソートする方法がわかりません。
  • C#についての質問です。ArrayList内の要素を特定のフィールドを基準に昇順または降順にソートする方法について教えてください。
  • C#について質問があります。ArrayListを使用した情報管理リストのプログラムにソート機能を追加したいですが、IComparableやIComparer以外でソートを実装する方法がわかりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

ArryListのSortを使わずに自前のソートルーチンを装備すればいいだけではないですか たとえば void mySort( ArrayList arSrc, ref ArrayList arDes, string strFld, int nSortDir) {   object[] obj = arSrc.ToArray();   PERSON[] ar = new PERSON[ obj.Length ];   Array.Copy( obj, ar, obj.Length );   if ( ( nSortDir != 1 ) && ( nSortDir != 2 ) ) {     return;   }   if ( ( strFld != "age" ) && ( strFld != "name" ) ) {     return;   }   for( int n = 0; n < ar.Length-1; n++ )   {     for ( int m = ar.Length - 1; m > n; m-- )     {       PERSON tmp;       if ( strFld == "age" )       {         if ( ( ( nSortDir == 1 ) && ( ar[n].age > ar[m].age ) ) ||           ( ( nSortDir == 2 ) && ( ar[n].age < ar[m].age ) )         {           tmp = ar[n];           ar[n] = ar[m];           ar[m] = tmp;         }       } else {         if ( ( ( nSortDir == 1 ) && ( ar[n].name。CompareTo( ar[m].name )>= 0 ) ) ||            ( ( nSortDir == 2 ) && ( ar[n].name.ComapreTo(ar[m].name)<0 ) ) )         {           tmp = ar[n];           ar[n] = ar[m];           ar[m] = tmp;         }       }     }   }   arDest.Clear();   arDest.Addrange( ar ); } といった具合で ・・・

noname#114110
質問者

お礼

おっしゃるとおりですね! 調べているとどうしてもIComparable および IComparerを使用する方法ばかりが見つかるので、自分でソートルーチンを作ることがすっかり頭から抜け落ちていました;; コードの一例まで記述してくださってありがとうございました!

すると、全ての回答が全文表示されます。

関連するQ&A