2014-02-26 68 views
-2

基于我看到here的代码,我几乎是完全相同的代码应工作:为什么选择不被识别为XElement的有效方法?

XDocument doc = XDocument.Parse(stringifiedXML); 
var Platypi = doc.Descendants("Platypus").Select(delItem => new 
{ 
    Name = delItem.Element("duckbillName").Value, 
    Length = delItem.Element("length").Value, 
    Weight = delItem.Element("weight").Value, 
    Age = delItem.Element("age").Value, 
}).ToList(); 

然而,而是粗暴地从我的lazyboy下抽搐地毯和泄漏我在地板上,嘲笑我的狼狈与“'System.Collections.Generic.IEnumerable'不包含'Select'的定义,并且没有找到接受'System.Collections.Generic.IEnumerable'类型的第一个参数的扩展方法'Select'(你是否缺少using指令或装配参考?)

问题可能会得到肯定回答,b用鼠标右键单击“选择”不能提供“解决”上下文菜单项,所以我不知道什么,如果有的话,我可能会失踪。

+2

你确定你已经从你的项目中添加了对'System.Linq'的引用吗? –

+0

我有System.XML.LINQ;我看不到System.LINQ可用... –

+0

您正在使用的是什么版本的.NET Framework?您至少需要使用4.0版本,以便能够使用LINQ方法 –

回答

1

只是导入System.Linq命名空间:

using System.Linq; 

Enumerable类,这是System.Linq namespace.If下定义的所有LINQ扩展方法您正在使用.NET Framework 4.5.1版本,那么在添加参考后,您应该可以使用LINQ方法。

+0

是的,它做到了;我觉得很奇怪,甚至是一个错误,右键单击“选择”不能提供“解决”上下文菜单项。如果你不了解自己(.NET),我该怎么知道你呢?毕竟,我不是精神病医生。 –

+1

这不是添加引用。您只是从其他名称空间导入类型的名称。 –

+0

@ChrisDunaway你是绝对正确的。我更新了我的答案。这只是导入命名空间,对'System.Core.dll'的引用是必要的,它已被默认添加 –

1

您必须添加System.Linq命名空间以使用Select扩展方法。 选择添加引用,并添加System.Core.dll到项目

+0

我已经在使用System.Core,版本4.0.0.0 –

相关问题