[英]C# GetFiles with extension and date filter
我只想返回今天从包含多个文件和一个日期范围的文件夹中创建的.xls文件。
我正在尝试:
FBD.SelectedPath = @"\\USMCO\Test\";
string[] files = Directory.GetFiles(FBD.SelectedPath, "*.xls")
.Where(file => new FileInfo(file).CreationTime.Date == DateTime.Today.Date);
foreach (string file in files)
{
listBox1.Items.Add(Path.GetFileName(file));
}
但是得到这个错误。 CS0266无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'string []'。 存在显式转换(您是否缺少演员表?)
我在这里想念什么? TIA
尝试此操作,您无法调用.ToArray()方法
string[] files = Directory.GetFiles(FBD.SelectedPath, "*.xls")
.Where(file => new FileInfo(file).CreationTime.Date == DateTime.Today.Date).ToArray();
替代方式
foreach (string file in Directory.GetFiles("", "*.xls").Where(file =>
new FileInfo(file).CreationTime.Date == DateTime.Today.Date))
{
listBox1.Items.Add(Path.GetFileName(file));
}
通过调用其ToArray方法将可枚举转换为数组:
string[] files = Directory.GetFiles(FBD.SelectedPath, "*.xls").Where(file =>
new FileInfo(file).CreationTime.Date == DateTime.Today.Date).ToArray();
Where
扩展方法返回IEnumerable
,而不是数组。 但是您不需要数组来执行foreach
循环,您只需将string[] files = Directory....
更改为var files = Directory....
然后继续其余代码即可。
FBD.SelectedPath = @"\\USMCO\Test\";
var files = Directory.GetFiles(FBD.SelectedPath, "*.xls")
.Where(file => new FileInfo(file).CreationTime.Date == DateTime.Today.Date);
foreach (string file in files)
{
listBox1.Items.Add(Path.GetFileName(file));
}
但是,使用DirectoryInfo.EnumerateFiles
代替Directory.GetFiles
可以做得更好,您可以直接获取FileInfo
,而不必为每个文件创建一个:
FBD.SelectedPath = @"\\USMCO\Test\";
var files = DirectoryInfo.EnumerateFiles(FBD.SelectedPath, "*.xls")
.Where(file => new file.CreationTime.Date == DateTime.Today.Date);
// file here is an instance of FileInfo!
foreach (var file in files)
{
// FileInfo.Name contains only the file name, not the entire path
listBox1.Items.Add(file.Name);
}
您忘记选择文件名:
string[] files = Directory
.GetFiles(FBD.SelectedPath, "*.xls")
.Select(path => new FileInfo(path)
.Where(file => file.CreationTime.Date == DateTime.Today.Date)
.Select(file => file.FullName)
.ToArray();
替代解决方案:
string[] files = new DirectoryInfo(FBD.SelectedPath)
.GetFiles("*.xls")
.Where(file => file.CreationTime.Date == DateTime.Today.Date)
.Select(file => file.FullName)
.ToArray();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.