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)
//....