C# 无法隐式转换类型';System.IO.FileInfo';至';System.IO.FileInfo[]

C# 无法隐式转换类型';System.IO.FileInfo';至';System.IO.FileInfo[],c#,.net,linq,C#,.net,Linq,下面代码中的where子句中出现错误。错误状态为: 无法将类型“System.IO.FileInfo”隐式转换为“System.IO.FileInfo[] 我试图完成的是在特定日期之后或之间获取目录中的每个文件。然后,我需要遍历每个文件,并获取有关该文件的一些信息 DirectoryInfo info = new DirectoryInfo(dirtxt.Text); FileInfo[] fls = info.GetFiles() .Where(fil

下面代码中的
where
子句中出现错误。错误状态为:

无法将类型“System.IO.FileInfo”隐式转换为“System.IO.FileInfo[]

我试图完成的是在特定日期之后或之间获取目录中的每个文件。然后,我需要遍历每个文件,并获取有关该文件的一些信息

DirectoryInfo info = new DirectoryInfo(dirtxt.Text);
FileInfo[] fls = info.GetFiles()
                     .Where(file => file.LastWriteTime >= DateTime.Now)
                     .First();

foreach (FileInfo fi in fls)
{
    //Collect file information here
}
您使用的是
First()
,因此应该是:

FileInfo fls = info.GetFiles()
                .Where(file => file.LastWriteTime >= DateTime.Now).First();
或者不使用
First()

或者我的首选方法不指定类型并使用
IEnumerable

var fls = info.GetFiles().Where(file => file.LastWriteTime >= DateTime.Now);
您正在对单个选择使用
First()
,但试图将其插入数组中,这是错误的。尝试将查询设置为数组、列表或IEnumerable以进行迭代

FileInfo[] fls = info.GetFiles()
    .Where(file=>file.LastWriteTime >= DateTime.Now).ToArray();

List fls=info.GetFiles()
.Where(file=>file.LastWriteTime>=DateTime.Now).ToList();

IEnumerable fls=info.GetFiles()
.Where(file=>file.LastWriteTime>=DateTime.Now).AsEnumerable();
您正在使用First()函数。这将只返回与Where子句匹配的第一个FileInfo


删除.First()以获取可枚举项。

此错误是由于使用了
First()
,它将只返回单个项(如果未找到任何项,则引发异常)。您只需删除以下内容:

var fls = info.GetFiles()
    .Where(file=>file.LastWriteTime >= DateTime.Now);

foreach (FileInfo fi in fls)
//....
foreach
循环中迭代集合时,不必返回列表数组

另一方面,
First()
可以接受谓词,因此您可以在不使用
Where
子句的情况下使用它:
FileInfo fls=info.GetFiles().First(file=>file.LastWriteTime>=DateTime.Now)
List<FileInfo> fls = info.GetFiles()
    .Where(file=>file.LastWriteTime >= DateTime.Now).ToList();
IEnumerable<FileInfo> fls = info.GetFiles()
    .Where(file=>file.LastWriteTime >= DateTime.Now).AsEnumerable();
var fls = info.GetFiles()
    .Where(file=>file.LastWriteTime >= DateTime.Now);

foreach (FileInfo fi in fls)
//....