List(Of 構造体)のソート

解決


トーシン  2009-07-24 02:53:19  No: 146104

VB 2008でList(Of T)を使ってデータ処理を行おうと思っていますが、Listで扱うものを構造体やクラスにした場合、
ソートはどのように行えばよいでしょうか?
例えば、構造体Stru1があるとします。Stru1のメンバにはValue1とValue2(いずれもStringとする)があるとします。
そして、List(Of Stru1)というリストを作成しましたとします。このListをStru1.Value2(String)でソートしたい場合、
どのようにしたらよいか、ご回答のほどよろしくお願いします。


YuO  2009-07-24 03:35:05  No: 146105

Sort メソッドには,比較用のオブジェクトやデリゲートを受け取るものがあります。
MSDN: List(T).Sort メソッド (IComparer(T)) (System.Collections.Generic)
http://msdn.microsoft.com/ja-jp/library/234b841s.aspx
MSDN: List(T).Sort メソッド (Comparison(T)) (System.Collections.Generic)
http://msdn.microsoft.com/ja-jp/library/w56d4y5z.aspx

前者が比較用のオブジェクトを受け取る Sort メソッドで,
後者が比較用のデリゲートを受け取る Sort メソッドです。
MSDN には,String を長さで比較するための例が載っていますので,参考になると思います。


魔界の仮面弁士  2009-07-24 07:57:52  No: 146106

Sort メソッドについては既に触れられているので、それ以外の方法を。

'Dim srcList As New List(Of Stru1)()

'【案1】
Dim dstList1 = (From s In srcList Order By s.Value2).ToList()

'【案2】
Dim dstList2 = srcList.OrderBy(Function(s) s.Value2).ToList()


トーシン  2009-07-24 15:40:39  No: 146107

YuOさま、魔界の仮面弁士さま、ご回答ありがとうございました。
色々な方法があるのですね。
これらを参考にトライしてみます。
ありがとうございました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加