按键组字典

时间:2014-08-19 17:45:24

标签: c#

var invalidPageNumberAndSize = new Dictionary<string, string>
{
    {"0","0"},
    {"0", ""},
    {"", "0"},
    {"abc", ""},
    {"", "abc"},
    {"abc", "abc"},
};

如果我尝试循环,这将会出错,因为我有两个相同的密钥(我有2“0”,依此类推)所以它会在我的循环中抛出一个双键错误。

我该如何做到这一点?

2 个答案:

答案 0 :(得分:2)

如果您需要多个重复的密钥,则无法使用字典。

一个选项是你可以拥有Dictionary<string,List<string>>或类似的(其中每个键可以有多个值。这是填充的更多工作,但支持这种类型的场景。另一种选择是使用Lookup

话虽如此,鉴于您的变量名称,我会重新考虑您要做的事情。将“大小”和“页码”存储为字符串似乎不合适。

答案 1 :(得分:0)

你可以看看Lookup。它的行为类似于字典,但它是不可变的,并将对数据进行分组。您将使用Contains而不是contains key,并且您不会获得良好的初始化语法。

var invalidPageNumberAndSizeData = new[] {
        new { key = "0", value = "0"},
        new { key = "0",  value = ""},
        new { key = "",  value = "0"},
        new { key = "abc",  value = ""},
        new { key = "",  value = "abc"},
        new { key = "abc",  value = "abc"}
    };


var invalidPageNumberAndSize = invalidPageNumberAndSizeData.ToLookup(c => c.key, c => c.value);
var isAbc = invalidPageNumberAndSize.Contains("abc");
var abcData = invalidPageNumberAndSize["abc"];