System.Array. does not contain a definition for “T

2020-06-06 20:25发布

问题:

I'm getting the above error on the ToList() line of the code below

if (emailReplyTo != null)
{
  System.Collections.Generic.List<String> replyto
    = emailReplyTo
    // Strip uneccessary spaces
    .Replace(", ", ",")
    .Split(',')
    .ToList();

  request.WithReplyToAddresses(emailReplyTo);
}

I have included using System.Collections; at the top of my file. The target framework is 3.5, so why is this causing an error?

回答1:

The ToList method you are looking for is an extension method. Try adding this using directive to the top of your file:

using System.Linq;

By adding this using directive you are indicating to the compiler that any extension methods in that namespace should be imported. It's kind of a shame that there isn't more help from Visual Studio around importing extension methods (ReSharper does this rather nicely).



回答2:

In case someone stumbles on this questions after googling...

I had the exact same problem in Razor views and adding using System.Linq at the top didn't help.

What did help is calling .Cast() before using Linq extension methods:

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


回答3:

You can also do this without .toList, saves including an entire library for no real reason.

new List(array)



回答4:

ToList() is an extension method. Maybe you're missing the

using System.Linq;


回答5:

This is simply because ArrayList does not expose a method named ToList.

See this MSDN page for a table view of the members available to you.

As explained by others, you may access this extension method by importing the Linq library:

using System.Linq;

Also, see this link for a custom implementation of such, should you desire to implement one.



回答6:

It's because the Enumerable extension methods aren't available.

You need to add "using System.Linq"



回答7:

This worked for me:

 var lst = ((IEnumerable<XElement>)doc.Element("cards").Elements("card")).ToList();

My initial result was simply a dynamic. The .Cast() method gave me the same error as ToList() but this did the trick.