系统.数组。不包含“ToList”的定义
Posted
技术标签:
【中文标题】系统.数组。不包含“ToList”的定义【英文标题】:System.Array. does not contain a definition for "ToList" 【发布时间】:2011-07-29 03:28:51 【问题描述】:我在下面代码的 ToList() 行中遇到上述错误
if (emailReplyTo != null)
System.Collections.Generic.List<String> replyto
= emailReplyTo
// Strip uneccessary spaces
.Replace(", ", ",")
.Split(',')
.ToList();
request.WithReplyToAddresses(emailReplyTo);
我在文件顶部包含了using System.Collections;
。
目标框架是3.5,为什么会报错?
【问题讨论】:
如果有人遇到同样的问题,请深入查看Output
窗口。因为Error
窗口有时可能会产生误导。
【参考方案1】:
这仅仅是因为ArrayList
没有公开名为ToList
的方法。
请参阅this MSDN page,查看可供您使用的成员的表格视图。
正如其他人所解释的,您可以通过导入 Linq 库来访问此扩展方法:
using System.Linq;
另外,see this link 用于自定义实现,如果您希望实现的话。
【讨论】:
你的意思是Array
,而不是ArrayList
...
@KonradRudolph - 好吧,现在我知道了。 ;) 可以发誓我在标题中读到了ArrayList
,但看不到任何编辑,所以我一定是弄错了。【参考方案2】:
您正在寻找的ToList
方法是一种扩展方法。尝试将此using
指令添加到文件顶部:
using System.Linq;
通过添加此using
指令,您向编译器指示应导入该命名空间中的任何扩展方法。很遗憾,Visual Studio 没有提供更多关于导入扩展方法的帮助(ReSharper 做得很好)。
【讨论】:
不错。我有点惊讶你不能在 VisualStudio 中右键单击它并找到“解决...”选项。【参考方案3】:这是因为 Enumerable 扩展方法不可用。
您需要添加“使用 System.Linq”
【讨论】:
【参考方案4】:ToList() 是一种扩展方法。也许你错过了
using System.Linq;
【讨论】:
【参考方案5】:您也可以在不使用 .toList 的情况下执行此操作,无需任何理由即可保存包括整个库。
新列表(数组)
【讨论】:
帮助很大!不过不要忘记如果有人在谷歌搜索后偶然发现这个问题......
我在 Razor 视图中遇到了完全相同的问题,在顶部添加 using System.Linq
并没有帮助。
在使用 Linq 扩展方法之前调用 .Cast()
有什么帮助:
myArrayVariable.Cast<SomeClass>().ToList() //ok, NOW ToList works fine
【讨论】:
dotnet 4.5 普通单元测试代码中的相同问题及解决方法。我还没有检查原因。 正确。例如,在使用枚举时必须这样做。以字符串形式获取 MyEnumType 名称列表:System.Enum.GetValues(typeof(MyEnumType)).Cast这对我有用:
var lst = ((IEnumerable<XElement>)doc.Element("cards").Elements("card")).ToList();
我最初的结果只是一个动态的。 .Cast() 方法给了我与 ToList() 相同的错误,但这成功了。
【讨论】:
以上是关于系统.数组。不包含“ToList”的定义的主要内容,如果未能解决你的问题,请参考以下文章