为什么我不能循环通过这本字典?

时间:2014-12-31 13:49:36

标签: c# asp.net-mvc-3 dictionary

我认为这本来是相对简单的,我在这里首先运行这个代码,使用第三方软件将一组值作为字典返回:

List<Dictionary<string, long>> result = 3rdPartyConnection.GetPlans(id, params);

然后我尝试使用以下代码循环这些结果(所以我可以使用它们和其他值填充视图模型),首先我使用viewmodel声明一个新列表,然后循环遍历结果以填充模型: / p>

        List<OptionViewModel> AvailableOptions = new List<OptionViewModel>();

        foreach (KeyValuePair<string, long> item in result)
        {
            OptionViewModel c = new OptionViewModel();
            c.Code = item.Key;
            c.Value = item.Value;
            AvailableOptions.Add(c);
        }   

但它只会产生以下错误:

Error   257 Cannot convert type 'System.Collections.Generic.Dictionary<string,long>' to 'System.Collections.Generic.KeyValuePair<string,long>'  

我不明白问题是什么,从我在c#上读到的内容,这就是你如何循环通过字典。我觉得这对我来说是一种简单的疏忽......

2 个答案:

答案 0 :(得分:4)

这是一个List<>词典,而不是一个Dictionary<,>。在彼此内部使用两个foreach循环。

有时最好在var循环中使用foreachforeach (var item in ...)它可以帮助您找出迭代变量类型的内容,而无需引入强制转换。

答案 1 :(得分:2)

您需要首先遍历List,遍历每个字典,然后您可以遍历键值对:

foreach (Dictionary<string, long> dic in result)
{
    foreach(KeyValuePair<string, long> item in dic)
    {
        OptionViewModel c = new OptionViewModel();
        c.Code = item.Key;
        c.Value = item.Value;
        AvailableOptions.Add(c);
    }    
}