Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IEnumerable不添加项_C#_.net_List_Loops_Ienumerable - Fatal编程技术网

C# IEnumerable不添加项

C# IEnumerable不添加项,c#,.net,list,loops,ienumerable,C#,.net,List,Loops,Ienumerable,为什么IEnumerable不添加项 此代码将ITEN添加到值列表: List<String> values = new List<String>(); for (int i = 0; i < ddlTransportadora.Items.Count; i++) { values.Add(ddlTransportadora.Items[i].Value); } 但此代码生成循环,且after值没有iten: IEnumberable<String&

为什么IEnumerable不添加项

此代码将ITEN添加到值列表:

List<String> values = new List<String>();
for (int i = 0; i < ddlTransportadora.Items.Count; i++)
{
    values.Add(ddlTransportadora.Items[i].Value);
}
但此代码生成循环,且after值没有iten:

IEnumberable<String> values = new List<String>();
for (int i = 0; i < ddlTransportadora.Items.Count; i++)
{
    values.Add(ddlTransportadora.Items[i].Value);
}
有什么想法吗?

因为在IList接口中定义的Add方法和IEnumerable不是从IList继承的。您可以改为使用此方法:

IList<String> values = new List<String>();
for (int i = 0; i < ddlTransportadora.Items.Count; i++)
{
    values.Add(ddlTransportadora.Items[i].Value);
}

所有这些都将为您提供一个IEnumerable:

您可以使用显式构造函数来构建和填充集合:

新列表ddla.Items.Select x=>x.Value 可以使用LINQ动态创建可枚举集合:

ddla.Items.Select x=>x.Value.ToList ddla.Items.Select x=>x.Value.ToArray 您甚至可以跳过创建实际集合,只需使用LINQ DEREFERED execution来提供数据的可枚举视图:

ddla.Items.Select x=>x.Value
为什么要让事情变得比需要的复杂?

我很惊讶,第二个例子编译时甚至假设它可以编译。IEnumerable没有Add。IEnumerable接口中没有方法Add。另外,第一个示例有什么问题?使用IEnumerable的原因通常是您希望迭代或使用LINQ,但不关心它是否是作为底层源的列表或数组。不是因为你想添加东西。我可以补充一句吗,来自于Enumerable这个词,你能添加东西不是很奇怪吗?