0

vb.netに(文字列の)リストがあります。これは、5つの文字列リスト項目を含むリストを含むリストです。

含まれているリストの2番目の項目でリストを並べ替えたいのですが、.sortメソッドで必要なパラメーターがわかりません。パラメータとして何を入力する必要がありますか。比較関数を作成して角かっこで囲むことについて何か読んだのですが、それがどのように機能するのかわかりません。

dim multiList as list(of list(of string))

multiList.sort(compare second item in lists)

ありがとう

4

3 に答える 3

3

デフォルト以外の基準に基づいて何かのリストを並べ替える最も簡単な方法は、アイテムの任意のペアが与えられた場合、最初の値が2番目の値より大きい場合は正の整数を返し、次の場合は負の整数を返す関数を作成することです。 2番目の項目は最初の項目よりも大きいか、どちらの条件も当てはまらない場合はゼロです(つまり、項目のランクが等しい-必ずしも「等しい」とは限りません)。たとえば、絶対に肯定的な場合、リストのリスト内のすべての内部リストには、2番目の項目としてnull以外の文字列が含まれます。

    共有関数CompareLists(L1 As List(Of String)、L2 As List(Of String))As Integer
        L1(1).CompareTo(L2(1))を返します
    終了機能

次に、並べ替えを実行する場合:

    Array.Sort(myArray、AddressOf CompareLists)

一部のリストに有効な内部リストがない場合は、考えられるすべてのケースを処理するコードを追加する必要があります。

于 2012-06-25T15:07:52.160 に答える
2

ラムダ式をSortメソッドに渡すことができます。

multilist.Sort(Function(x, y) x(1).CompareTo(y(1)))

これにより、含まれている各リストの2番目の要素でリストが並べ替えられます。

于 2012-06-25T15:13:27.490 に答える
0

私はあなたが何をしようとしているのか完全には理解していませんが、ソートされたリストを見ましたか?

Dim list As New SortedList(Of Integer, String)

キー(この場合は整数)でソートすることで機能します。私が言ったように、あなたが何を求めているのかよくわかりませんが、おそらくこれを使用して問題を解決できます。

于 2012-06-25T15:11:36.333 に答える