1

我需要的是能够将两个非唯一字段的组合放入 SortedList 中,但该对是(如数据库复合键)。

更准确地说,我有我的清单,我希望能够用它来做到这一点

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类。Jon Skeet 在这个问题上提供了一个很好的答案。c#.NET字典中的重复键?

例如,您首先必须将它们存储在可枚举对象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 回答