我认为这本来是相对简单的,我在这里首先运行这个代码,使用第三方软件将一组值作为字典返回:
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#上读到的内容,这就是你如何循环通过字典。我觉得这对我来说是一种简单的疏忽......
答案 0 :(得分:4)
这是一个List<>
词典,而不是一个Dictionary<,>
。在彼此内部使用两个foreach
循环。
有时最好在var
循环中使用foreach
:foreach (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);
}
}