为什么我不能遍历这本字典

本文关键字:字典 遍历 不能 为什么 | 更新日期: 2023-09-27 18:35:58

我认为这会相对简单,我在这里首先运行此代码,该代码使用第三方软件返回一组值作为字典:

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

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

        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# 上读到的内容来看,这就是你遍历字典的方式。我有一种感觉,这是我的某种简单疏忽......

为什么我不能遍历这本字典

它是字典的List<>,而不是单个Dictionary<,>。在彼此内部使用两个foreach循环。

有时最好在foreach循环中使用varforeach (var item in ...) 它可以帮助您确定迭代变量类型是什么,而无需引入强制转换。

您需要

先遍历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);
    }    
}