在.net 2.0中存储非唯一对?

时间:2011-08-26 01:28:17

标签: c# .net .net-2.0

我必须存储一对非唯一的字符串,所以我可以使用:

"A", "B" "A","C"

我不能使用Dictionary或HashTable,因为我没有唯一的密钥。我想了几个选择:

List<List<string>,List<string>> = new List<List<string>,List<string>>(); //Too long?

创建一个类或结构(什么更好?)来保存我的对,然后将其存储在列表中,所以

class pairs
{

}

List<pairs> values = new List<pairs>();

我还需要能够通过对进行枚举,所以我不需要关心查询,排序和比较。因此,最好使用最不具体的类型,例如Enumerable?

3 个答案:

答案 0 :(得分:10)

您应该可以使用List<KeyValuePair<string, string>>

KeyValuePair<TKey, TValue>结构本身不需要唯一的密钥,即使您将它们收集在一个列表中也是如此。

如果您认为KVP在语义上不符合您的要求,请使用自定义类型。无论您的自定义类型是类还是结构都无关紧要。

答案 1 :(得分:2)

仅仅List<string[]>呢?

var list = new List<string[]>();

list.Add(new [] { "A", "B"});

foreach(var pair in list)
{
   Console.WriteLine(pair[0] + pair[1]);
}

答案 2 :(得分:0)

可以使用List<KeyValuePair<string,string>>,但为了避免密钥的语义(因为你说它不是唯一的),我会使用List<Tuple<string,string>>几乎相同,但语义不同。