Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么可以';我不能反复翻阅这本词典吗?_C#_Asp.net Mvc 3_Dictionary - Fatal编程技术网

C# 为什么可以';我不能反复翻阅这本词典吗?

C# 为什么可以';我不能反复翻阅这本词典吗?,c#,asp.net-mvc-3,dictionary,C#,Asp.net Mvc 3,Dictionary,我认为这应该是相对简单的,我在这里首先运行这段代码,它使用第三方软件作为字典返回一组值: List<Dictionary<string, long>> result = 3rdPartyConnection.GetPlans(id, params); List result=3rdPartyConnection.GetPlans(id,params); 然后,我尝试使用以下代码循环这些结果(以便可以使用它们和其他值填充viewmodel),首先使用viewmodel声

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

List<Dictionary<string, long>> result = 3rdPartyConnection.GetPlans(id, params);
List result=3rdPartyConnection.GetPlans(id,params);
然后,我尝试使用以下代码循环这些结果(以便可以使用它们和其他值填充viewmodel),首先使用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);
        }   
List AvailableOptions=new List();
foreach(结果中的KeyValuePair项)
{
OptionViewModel c=新的OptionViewModel();
c、 代码=项。键;
c、 价值=项目价值;
添加(c);
}   
但它只会产生以下错误:

Error   257 Cannot convert type 'System.Collections.Generic.Dictionary<string,long>' to 'System.Collections.Generic.KeyValuePair<string,long>'  
错误257无法将类型“System.Collections.Generic.Dictionary”转换为“System.Collections.Generic.KeyValuePair”
我不明白问题是什么,从我在c#上读到的内容来看,这就是你循环浏览字典的方式。我有一种感觉,这是我的一种简单的疏忽……

这是一个
词典列表,而不是一本
词典。在彼此内部使用两个foreach
循环

有时最好在
foreach
循环中使用
var
foreach(varitem in…
它可以帮助您在不引入强制转换的情况下确定迭代变量类型。

它是一个字典的
列表,而不是一个
字典。在彼此内部使用两个foreach
循环


有时最好在
foreach
循环中使用
var
foreach(var项在…
中)它可以帮助您在不引入强制转换的情况下确定迭代变量的类型。

您需要首先遍历
列表
,遍历每个字典,此时,您可以遍历键值对:

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);
    }    
}   
foreach(结果中的字典dic)
{
foreach(dic中的KeyValuePair项)
{
OptionViewModel c=新的OptionViewModel();
c、 代码=项。键;
c、 价值=项目价值;
添加(c);
}    
}   

您需要首先遍历
列表,遍历每个字典,然后遍历键值对:

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);
    }    
}   
foreach(结果中的字典dic)
{
foreach(dic中的KeyValuePair项)
{
OptionViewModel c=新的OptionViewModel();
c、 代码=项。键;
c、 价值=项目价值;
添加(c);
}    
}   

这是一个字典列表-因此你必须先浏览该列表。这是一个字典列表-因此你必须先浏览该列表。谢谢!就像我想象的那样简单!谢谢就像我想象的那样简单!