C# 字典<>;。ContainesKey给出RuntimeBinderException
在.cshtml中,我想检查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); }
目录
中是否存在一个键,但我总是得到一个错误,并且找不到原因
这是我的代码:
@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}
不错,这也行!我使用了另一个解决方案,并将其放置在问题区域,因为我无法回答自己的问题。