为什么词典"不包含' ElementAt'"的定义?在动态编程期间
Dictionary<string, dynamic> D1 = new Dictionary<string, dynamic>();
D1.Add("w1", 10);
D1.Add("w2", false);
Dictionary<string, dynamic> D2 = new Dictionary<string, dynamic>();
D2.Add("v1", 10);
D2.Add("v2", D1);
textBox1.Text += D2.ElementAt(1).Value.ElementAt(1).Value;
我们应该在textbox1&#34; false&#34;
上得到结果
但相反,我们会得到运行时错误:&#34;不包含&#39; ElementAt&#39;&#34;
如果您输入:
Dictionary<string, dynamic> var1 = D2.ElementAt(1).Value;
textBox1.Text += var1.ElementAt(1).Value;
然后它会正常工作!
答案 0 :(得分:3)
这里有两件事是错的:
D2
的第二个条目是D2.ElementAt(1)
检索到的条目。不要做出这样的假设:字典基本上是无序的。Enumerable.ElementAt
类型的表达式调用扩展方法(dynamic
)您可以通过显式调用Enumerable.ElementAt
作为静态方法来解决第二个问题:
textBox1.Text += Enumerable.ElementAt(D2.ElementAt(1).Value, 1).Value;
尽管如此,这仍然是第一部分。目前尚不清楚你想要达到的目标,这意味着我不清楚我应该向那个部分提出什么样的建议......
答案 1 :(得分:0)
另一个解决方案,对我来说,我需要添加对System.Linq的引用,一切正常,不需要修改代码。