2011-04-04 285 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

相關問題