List(Of 構造体)のソート

解決


トーシン  2009-07-23 17:53:19  No: 146104  IP: 192.*.*.*

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

編集 削除
YuO  2009-07-23 18:35:05  No: 146105  IP: 192.*.*.*

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-23 22:57:52  No: 146106  IP: 192.*.*.*

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 06:40:39  No: 146107  IP: 192.*.*.*

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

編集 削除