无法转换类型&#39; System.Collections.Generic.KeyValuePair <int,dynamic =“”>&#39; to&#39; System.Collections.Generic.Dictionary <int,dynamic =“”>

时间:2016-12-12 10:34:54

标签: c# visual-studio

我试图循环遍历值的字典,然后更新&#34; MTables&#34; (表名)字段在&#39; QvxDataRow MakeEntry()&#39;功能通过词典的键值。

我需要&#34; MTables&#34;包含这样的

SlNo StudentName StudentClass
1        Daniel                4
2         Maties               4

但在我的代码中,我为每个循环收到错误,如下所示

Cannot convert type 'System.Collections.Generic.KeyValuePair<int, dynamic>' to 'System.Collections.Generic.Dictionary<int, dynamic>

我需要添加硬编码值并将其放入MTables行。我有这个

   private IEnumerable<QvxDataRow> GetApplicationDB()
        {
            Dictionary<int, dynamic> map = new Dictionary<int, dynamic>
    {
        {1, new {SlNo="1", StudentName="Daniel",StudentClass="4"}},
        {2, new {SlNo="2", StudentName="Maties",StudentClass="4"}}
    };

            foreach (Dictionary<int, string> evl in map)
            {
                yield return MakeEntry(evl, FindTable("ApplicationsStudentDB", MTables));
            }
}

        private QvxDataRow MakeEntry( evl, QvxTable table)
        {
            var row = new QvxDataRow();
            row[table.Fields[0]] = evl.SlNo;
            row[table.Fields[1]] = evl.StudentName;
            row[table.Fields[2]] = evl.StudentClass;
            return row;
        }

我怎么能这样做,请帮助我。

1 个答案:

答案 0 :(得分:5)

这是因为当您遍历Dictionary中的项目时,Dictionary中的项目不是Dictionary,而是KeyValuePair。您在循环中声明evl类型错误。此外,您的字典包含intdynamic类型,但随后您将循环声明为一对字符串。你不能只改变那样的类型。它应该是:

foreach (KeyValuePair<int, dynamic> evl in map)