2011-04-04 284 views
30

我在下面的代码的ToList()行上得到上面的错误System.Array的。不包含“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,为什么这会导致错误?

+1

,采取在'Output'窗口深沉的样子。因为'错误'窗口有时可能会产生误导。 – Reddy 2017-04-26 22:57:43

回答

87

您正在寻找的ToList方法是一种扩展方法。尝试添加该using指令文件的顶部:

using System.Linq; 

通过增加你指示,在该命名空间中的扩展方法应导入的编译器这个using指令。有趣的是,在Visual Studio中没有更多的关于导入扩展方法的帮助(ReSharper很好地做到了这一点)。

+0

太好了,谢谢! – fearoffours 2011-04-04 12:26:42

+0

不错。我有点惊讶,你不能在VisualStudio上点击右键并找到“解决方案...”选项。 – micahhoover 2014-01-17 21:53:50

6

这只是因为ArrayList不公开名为ToList的方法。

请参阅this MSDN page了解可供您使用的成员的表格视图。

正如其他人解释,你可以通过导入的LINQ库访问此扩展方法:

using System.Linq; 

此外,see this link对于这样一个自定义实现,应你的愿望实现的。

+0

你的意思是'Array',而不是'ArrayList' ... – 2011-04-04 12:33:20

+0

@KonradRudolph - 好吧,现在我知道了。 ;)可以发誓我读标题中的'ArrayList',但看不到任何编辑,所以我必须弄错。 – 2011-04-04 12:38:41

3

这是因为Enumerable扩展方法不可用。

您需要添加 “使用System.Linq的”

8

ToList()是一个扩展方法。也许你错过了

using System.Linq; 
8

你也可以做到这一点,没有.toList,保存包括整个库没有真正的原因。

新的列表(阵列)

+0

这是一个巨大的帮助!不要忘记,虽然:新列表(数组); – Nate 2017-05-04 18:47:16

5

万一有人在谷歌搜索后,这个问题绊倒......

我在剃刀完全相同的问题的看法并在顶部加入using System.Linq没有帮助。

什么做帮助是使用LINQ扩展方法之前调用.Cast():如果有人有同样的问题

myArrayVariable.Cast<SomeClass>().ToList() //ok, NOW ToList works fine 
+0

在dotnet 4.5普通单元测试代码中存在同样的问题和解决方案。我没有检查过为什么。 – LosManos 2016-06-20 18:28:40

相关问题