使用System.Linq.Xml选择多个节点时出现Windows Phone问题

时间:2012-04-17 16:03:54

标签: linq-to-xml windows-phone-7.1

昨晚,当我使用WP7.1进行原型设计时,我遇到了这个问题。

我有一个类库,我将其用作所有数据访问的存储库。在这个类库中,我正在进行REST调用并获取XML。到目前为止,一切都在努力。从Stream返回我将它变成一个XElement。然后,当我执行XElement.Elements()XElement.Descendents()之类的操作时,当我查看System.Collections.IEnumerator.Current成员时,我收到以下异常。 (我不确定为什么会这样说,但这就是我在展开对象时看到的内容)

'System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement>' does not contain a definition for 'System' and no extension method 'System' accepting a first argument of type 'System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement>' could be found (are you missing a using directive or an assembly reference?)

此时我觉得这是一个命名空间问题所以我编写了以下代码并收到相同的异常。

var f = new XElement("Foo", new XElement("Bar", 1));
var b = f.Elements("Bar");

The error...

非常感谢您对此问题的任何帮助。我真的想用linq-to-xml而不是一堆循环来构造我的对象。

2 个答案:

答案 0 :(得分:1)

我猜这与推迟执行的预期一致。

当我在集合上调用ToList或类似内容时,我会得到预期的结果。当我尝试在断点期间(前面提到的异常)评估表达式时,我猜这个实例中肯定存在一个bug或者什么。我想我太信任调试器了:))

答案 1 :(得分:1)

执行linq操作并将其分配给“var”变量时,实际发生的是查询指令存储在其中。实际的数据集并没有存储在那里。 当您尝试从执行指令访问数据时,您将获得数据。 这就是为什么你没有在断点上看到任何数据的原因。