我有以下代码的错误:
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());
此外,Count()
似乎不再被允许。它被弃用了吗?
您正在尝试创建一个List<string>
,您应该告诉编译器
var list = new List<string>(colors);
没有List
,有一个名为List<T>
的泛型类,需要一个类型参数。如果不指定类型参数,则无法创建通用列表。
你也试图调用Count
扩展方法。该方法将IEnumerable<T>
作为第一个参数,而不是IEnumerable
,这里是定义:
public static int Count<TSource>(this IEnumerable<TSource> source)
所以你应该使用IEnumerable<string>
访问该扩展方法:
IEnumerable<string> query = list.Where(c => c.Length == 3);
list.Remove("red");
Console.WriteLine(query.Count());
您正在使用System.Collections.Generic.List<T>
,因此它是通用列表,因此您必须提供通用参数T
。在您的示例中,您需要一个List<string>
。所以尝试:
List<string> list = new List<string>(colors);
实际上,你的样本中根本不需要List
,你可以简化一切:
var count = new [] { "green", "brown", "blue", "red" }
.Where(c => c.length == 3)
.Where(c => c != "red")
.Count();
Console.WriteLine(count);
试试这个:
static void Main(string[] args)
{
string[] colors = { "green", "brown", "blue", "red" };
var list = new List<string>(colors); // <string>
IEnumerable query = list.Where(c => c.Length == 3); // "Length", not "length"
list.Remove("red");
Console.WriteLine(query.Count());
}