Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字典<>;。ContainesKey给出RuntimeBinderException_C#_Dictionary_Containskey - Fatal编程技术网

C# 字典<>;。ContainesKey给出RuntimeBinderException

C# 字典<>;。ContainesKey给出RuntimeBinderException,c#,dictionary,containskey,C#,Dictionary,Containskey,在.cshtml中,我想检查目录中是否存在一个键,但我总是得到一个错误,并且找不到原因 这是我的代码: @foreach (KeyValuePair<int, int> weekAndYear in @ViewBag.WeekAndYears) { int key = int.Parse(weekAndYear.Value + "" + weekAndYear.Key); bool exist = ViewBag.Menus.ContainsKey(key); }

在.cshtml中,我想检查
目录
中是否存在一个键,但我总是得到一个错误,并且找不到原因

这是我的代码:

@foreach (KeyValuePair<int, int> weekAndYear in @ViewBag.WeekAndYears)
{
    int key = int.Parse(weekAndYear.Value + "" + weekAndYear.Key);

    bool exist = ViewBag.Menus.ContainsKey(key);
}
@foreach(KeyValuePair weekAndYear in@ViewBag.WeekAndYears)
{
int key=int.Parse(weekAndYear.Value+“”+weekAndYear.key);
bool exist=ViewBag.Menus.ContainsKey(键);
}
我得到的错误是:

The best overloaded method match for System.Collections.Generic.Dictionary<int,Object>.this[int] has some invalid arguments
System.Collections.Generic.Dictionary的最佳重载方法匹配。此[int]具有一些无效参数
当我只使用.Key或.Value时,它仍然有效

编辑-解决方案


问题是什么,我不知道,但我已经用以下代码解决了问题:

foreach (KeyValuePair<int, int> weekAndYear in @ViewBag.WeekAndYears)
    {
        int key = int.Parse(weekAndYear.Value + "" + weekAndYear.Key);

        bool exist = ((Dictionary<int, Object>)ViewBag.Menus).ContainsKey(key);
}
foreach (KeyValuePair<int, int> weekAndYear in @ViewBag.WeekAndYears)
    {
        int key = int.Parse(weekAndYear.Value + "" + weekAndYear.Key);

        bool exist = ((Dictionary<int, Object>)ViewBag.Menus).ContainsKey(key);
}
foreach(KeyValuePair weekAndYear in@ViewBag.WeekAndYears)
{
int key=int.Parse(weekAndYear.Value+“”+weekAndYear.key);
boolexist=((字典)ViewBag.Menus).ContainsKey(键);
}

您是否可以尝试使用TryGetValue而不是ContainsKey,看看它是否有效:

@foreach (KeyValuePair<int, int> weekAndYear in @ViewBag.WeekAndYears)
{
    int key = int.Parse(weekAndYear.Value + "" + weekAndYear.Key); 
    Object outValue;
    bool exist = Menus.TryGetValue(key, out outValue);
}
@foreach(KeyValuePair weekAndYear in@ViewBag.WeekAndYears)
{
int key=int.Parse(weekAndYear.Value+“”+weekAndYear.key);
客体价值;
bool exist=Menus.TryGetValue(键,输出值);
}

问题是什么,我不知道,但我已经用以下代码解决了问题:

foreach (KeyValuePair<int, int> weekAndYear in @ViewBag.WeekAndYears)
    {
        int key = int.Parse(weekAndYear.Value + "" + weekAndYear.Key);

        bool exist = ((Dictionary<int, Object>)ViewBag.Menus).ContainsKey(key);
}
foreach (KeyValuePair<int, int> weekAndYear in @ViewBag.WeekAndYears)
    {
        int key = int.Parse(weekAndYear.Value + "" + weekAndYear.Key);

        bool exist = ((Dictionary<int, Object>)ViewBag.Menus).ContainsKey(key);
}
foreach(KeyValuePair weekAndYear in@ViewBag.WeekAndYears)
{
int key=int.Parse(weekAndYear.Value+“”+weekAndYear.key);
boolexist=((字典)ViewBag.Menus).ContainsKey(键);
}

您从何处获得此错误以及
@ViewBag.week和years
?在@foreach循环中,您的KeyValuePair应该是KeyValuePair而不是KeyValuePair。这可能就是问题所在。
@ViewBag.week和years
字典
。我在
ContainsKey(键)
上得到错误
@ViewBag.menu
字典
当查找失败时,键的值是多少?@InContext即使失败,
键的值也是
int
@ViewBag.WeekAndYears
包含
{31:2014,32:2014,33:2014}
不错,这也行!我使用了另一个解决方案,并将其放置在问题区域,因为我无法回答自己的问题。