1

私が必要としているのは、SortedListに一意ではない2つのフィールドの組み合わせを入れることができることですが、そのペアは(データベースの複合キーのように)です。

もっと正確に言えば、私は私のリストを持っています、そして私はそれでこれを行うことができるようになりたいです

Dim myList = New Generic.SortedList(Of String, String)
myList.add("aaa","aaa")
myList.add("aaa","bbb")
myList.add("bbb","bbb")
myList.add("bbb","aaa")

これにより、「同じキーのエントリがすでに存在する」という例外がスローされます。

自分のオブジェクトとそのオブジェクトのリストを作成できることは知っていますが、やりたいことのためにすでに存在するものはありますか?

ありがとう

4

1 に答える 1

3

Lookupクラスを使用できます。ジョンスキートはその主題について良い答えを提供しました。.NETディクショナリのc#重複キー?

たとえば、最初にそれらを列挙可能なオブジェクトに格納する必要がありますIEnumerable(Of (Tuple(Of String,String))

        Dim compositeKeys = New List(Of Tuple(Of String, String))
        compositeKeys.Add(New Tuple(Of String, String)("aaa", "aaa"))
        compositeKeys.Add(New Tuple(Of String, String)("aaa", "bbb"))
        compositeKeys.Add(New Tuple(Of String, String)("bbb", "aaa"))
        compositeKeys.Add(New Tuple(Of String, String)("bbb", "bbb"))

        Dim lookup = compositeKeys.ToLookup(Function(x) x.Item1)
        Dim aaaKeys = lookup("aaa") // 2 hits

特定のルックアップについては、常にありますLINQ

Dim specificLookup = lookup("aaa").Where(Function(x) x.Item2 = "bbb").FirstOrDefault
于 2012-04-17T08:29:22.020 に答える