【发布时间】:2014-08-05 19:44:01
【问题描述】:
在 .cshtml 中,我想检查 Directory<int, Object> 中是否存在密钥,但我总是出错并且找不到原因。
这是我的代码:
@foreach (KeyValuePair<int, int> weekAndYear in @ViewBag.WeekAndYears)
{
int key = int.Parse(weekAndYear.Value + "" + weekAndYear.Key);
bool exist = ViewBag.Menus.ContainsKey(key);
}
我得到的错误:
The best overloaded method match for System.Collections.Generic.Dictionary<int,Object>.this[int] has some invalid arguments
当我只使用 .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);
}
【问题讨论】:
-
你在哪里得到这个错误,
@ViewBag.WeekAndYears是什么? -
在 @foreach 循环中,您的 KeyValuePair 应该是 KeyValuePair
而不是 KeyValuePair 。这可能是问题所在。 -
@ViewBag.WeekAndYears是Dictionary<int, int>。我在ContainsKey(key)上收到错误消息。@ViewBag.Menus是Dictionary<int, Object> -
查找失败时key的值是多少?
-
@InContext
key的值是int,即使它失败了。@ViewBag.WeekAndYears包含{31: 2014, 32: 2014, 33: 2014}
标签: c# dictionary containskey