J'ai cette erreur avec le code suivant:
string[] colors = { "green", "brown", "blue", "red" };
var list = new List(colors);
IEnumerable query = list.Where(c => c.length == 3);
list.Remove("red");
Console.WriteLine(query.Count());
De plus, Count()
ne semble plus être autorisé. Est-ce obsolète?
Vous essayez de créer un List<string>
et vous devriez le dire au compilateur
var list = new List<string>(colors);
Il n'y a pas List
, il existe une classe generic nommée List<T>
, qui requiert un paramètre de type. Vous ne pouvez pas créer de liste générique sans spécifier le paramètre de type.
Aussi, vous essayez d'appeler la méthode d'extension Count
.Cette méthode prend IEnumerable<T>
comme premier paramètre, pas IEnumerable
, voici la définition:
public static int Count<TSource>(this IEnumerable<TSource> source)
vous devez donc utiliser IEnumerable<string>
pour accéder à cette méthode d'extension:
IEnumerable<string> query = list.Where(c => c.Length == 3);
list.Remove("red");
Console.WriteLine(query.Count());
Vous utilisez System.Collections.Generic.List<T>
, il s’agit donc d’une liste generic et vous devez donc fournir le paramètre genericT
. Dans votre exemple, vous voulez un List<string>
. Alors essayez:
List<string> list = new List<string>(colors);
En fait, vous n'avez pas besoin d'une List
dans votre échantillon et vous pouvez tout simplifier:
var count = new [] { "green", "brown", "blue", "red" }
.Where(c => c.length == 3)
.Where(c => c != "red")
.Count();
Console.WriteLine(count);