foreach遍历数组c#中的第一项

时间:2018-01-17 12:15:02

标签: c# arrays file file-upload foreach

我想循环遍历文件,并始终确保它只是循环的数组中的一个项目

var files = Request.Form.Files;
var singleFile = files[0];
foreach (var file in singleFile)
{

}

我收到错误foreach语句无法对类型'?'的变量进行操作。因为'?'不包含' GetEnumerator'

的公开定义

我该如何解决这个问题!感谢

3 个答案:

答案 0 :(得分:3)

您无法遍历非集合类型的项目。您已将Request.Form.Files中的第一个文件分配给变量。所以这个变量不是全部引用单个文件。

您可以使用Count-propertyHttpFileCollection

int fileCount = Request.Form.Files.Count;
if(fileCount > 0)
{
    HttpPostedFile firstFile = Request.Form.Files[0];
    // do something with it ....
}

如果你想枚举所有你可以在Request.Form.Files上使用循环:

foreach (HttpPostedFile file in Request.Form.Files)
{
    // do something with it
}

答案 1 :(得分:2)

错误很清楚。 singleItem只是原始集合中的单个项目,而不是实际的集合。如果要检查该集合只有一个元素,请使用files.Count

if(files.Count != 1)
    Console.WriteLine("Evil, evil");
else
{
    var singleFile = files[0];
    // ....
}

答案 2 :(得分:0)

试试这个,它会给出第一个收藏品。如果集合计数为0,则它​​将返回null

Request.Form.Files.FirstOrDefault()