C# 按键分组字典 var invalidPageNumberAndSize=新字典 { {"0","0"}, {"0", ""}, {"", "0"}, {“abc”,“}, {“abc”}, {“abc”,“abc”}, };

C# 按键分组字典 var invalidPageNumberAndSize=新字典 { {"0","0"}, {"0", ""}, {"", "0"}, {“abc”,“}, {“abc”}, {“abc”,“abc”}, };,c#,C#,如果我尝试循环它,这将出错,因为每个循环都有2个相同的密钥(我有2个“0”,以此类推),因此它将在循环中抛出一个dup密钥错误 我怎样才能做到这一点呢?如果需要多个重复的键,就不能使用字典 一个选项是,您可以有一个字典或类似的字典(其中每个键可以有多个值)。这需要更多的工作来填充,但支持这种类型的场景。另一个选项是使用 也就是说,给定变量名,我会重新考虑您要做的事情。存储“大小”和“页码”因为字符串似乎不合适。您可以查看查找。它的行为有点像字典,但它是不可变的,并且会对数据进行分组。您将使用Co

如果我尝试循环它,这将出错,因为每个循环都有2个相同的密钥(我有2个“0”,以此类推),因此它将在循环中抛出一个dup密钥错误


我怎样才能做到这一点呢?

如果需要多个重复的键,就不能使用字典

一个选项是,您可以有一个
字典
或类似的字典(其中每个键可以有多个值)。这需要更多的工作来填充,但支持这种类型的场景。另一个选项是使用


也就是说,给定变量名,我会重新考虑您要做的事情。存储“大小”和“页码”因为字符串似乎不合适。

您可以查看查找。它的行为有点像字典,但它是不可变的,并且会对数据进行分组。您将使用Contains而不是Contains键,并且没有很好的初始值设定项语法

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

如果你想拥有唯一的密钥,可以使用
字典
。你需要寻找一种不同的方法来保存数据。我可以进行分组,我不能解决这个问题吗?也许你可以使用List@CoffeeAddict我看到您删除了有关查找的问题。如果您看到InvalidatePageNumberAndSizeData是匿名类型的数组,而不是字典。
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"];