我在以下代码中出现此错误:
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()
。它被弃用了吗?
答案 0 :(得分:13)
您正在尝试创建List<string>
,您应该告诉编译器
var list = new List<string>(colors);
没有List
,有一个名为List<T>
的泛型类,需要一个类型参数。如果不指定type参数,则无法创建通用列表。
此外,您尝试调用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());
答案 1 :(得分:2)
您使用的是System.Collections.Generic.List<T>
,因此它是通用列表,因此您必须提供通用参数 T
。在您的示例中,您需要List<string>
。所以试试:
List<string> list = new List<string>(colors);
答案 2 :(得分:0)
实际上,您的样本中根本不需要List
,您可以简化所有内容:
var count = new [] { "green", "brown", "blue", "red" }
.Where(c => c.length == 3)
.Where(c => c != "red")
.Count();
Console.WriteLine(count);
答案 3 :(得分:-3)
试试这个:
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());
}