C# System.Collections.Generic.List<;T>;需要';1';类型参数

C# System.Collections.Generic.List<;T>;需要';1';类型参数,c#,list,C#,List,我有以下代码的错误: 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()似乎不再被允许。它是否已弃用?您正在尝试创建一个列表,您应该告诉编译器

我有以下代码的错误:

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()
似乎不再被允许。它是否已弃用?

您正在尝试创建一个
列表,您应该告诉编译器

var list = new List<string>(colors);
因此,您应该使用
IEnumerable
访问该扩展方法:

IEnumerable<string> query = list.Where(c => c.Length == 3);
list.Remove("red");
Console.WriteLine(query.Count());
IEnumerable query=list.Where(c=>c.Length==3);
列表。删除(“红色”);
Console.WriteLine(query.Count());

您使用的是
System.Collections.Generic.List
,因此它是一个Generic列表,因此您必须提供Generic参数
T
。在您的示例中,您需要一个
列表
。因此,请尝试:

List<string> list = new List<string>(colors);
List 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());
}
static void Main(字符串[]args)
{
字符串[]颜色={“绿色”、“棕色”、“蓝色”、“红色”};
变量列表=新列表(颜色);//
IEnumerable query=list.Where(c=>c.Length==3);/“Length”,而不是“Length”
列表。删除(“红色”);
Console.WriteLine(query.Count());
}

@DGibbs您是否忘记了“System.Linq.LinqExtention.Count(this IEnumerable)”???在投票否决某人之前,请确保101%的事情!我百分之百肯定。您已经定义了一个非泛型的
IEnumerable
。。。如果要访问
Count(),我怀疑您需要
IEnumerable
方法,或者,您可以调用
Cast
提供类型,例如
list.Cast().Count()
。回答问题之前,请确保您的代码是正确的。@DGibbs我已经编写并在Visual Studio上成功测试了它。直到那时,我才公布了答案。你在逻辑上是对的。但事实上,该代码在VS中运行良好。因此,请您纠正我的错误在哪里?
我已经在Visual Studio上编写并成功测试了该代码。
我严重怀疑这一点。了解差异:与可能的颜色重复。ToList()不适合您吗?
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());
}