我有一些维字符串对(有多少对不确定),想使用泛型存储:
a 内容一
b 内容二
c 内容三
a 内容四
d 内容五但是,如果是Dictionary<string, string>的泛型,则键值是不能重复的。
如果使用二维字符串数组,由于长度不确定,所以不太好用。有哪个泛型的键值对可以支持重复键值?

解决方案 »

  1.   

    list<T>至于T是啥随便你定义 class A
    {
       string a1;
      string a2}List<A>
      

  2.   

    你都字符串值对了还搞什么泛型,你知道泛型是干什么的吗?System.Collections.Specialized.NameValueCollection没事儿多看看MSDN,别蒙头瞎想...
      

  3.   

    呵呵,如果你懒得自定义数据记录类型,可以使用Tuple<....>。例如:List<Tuple<string, int, UserControl, Point>> list = new List<Tuple<string, int, UserControl, Point>>();然后返回一组UserControlIEnumerable<UserControl> query = from obj in list
                                        where obj.Item1 == "a" || obj.Item1.StartsWith("b")
                                        where obj.Item4.X < 100 && obj.Item4.Y < 200
                                        select obj.Item3;
      

  4.   

    呵呵,老p前卫啊,用起Tuple了感觉c#的tuple有点鸡肋了,用着没python里那么舒坦而且Item1,Item2别扭啊。用着用着就分不清谁是谁了
      

  5.   

    “重复键值”这个说法是不对的。既然是键值,就不允许重复。如果我把你说的“键值”理解为操作——为了快速查询,说有类似的,可能 SortedSet<T> 比较接近。但是让然不是。.net目前好像还没有一个支持你这种需求的,需要自己开发。例如你可以基于Diction<K, List<T>>自己编写一个class,然后自己补充个Add方法之类的好了。