所以我有这个例程:
public static IEnumerable<string> GetFiles( string path, string[] searchPatterns, SearchOption searchOption = SearchOption.TopDirectoryOnly) {
return searchPatterns.AsParallel()
.SelectMany(searchPattern =>
Directory.EnumerateFiles(path, searchPattern, searchOption))
.OrderBy<string, string>( (f) => f)
.Distinct<string>();
}
Run Code Online (Sandbox Code Playgroud)
它的工作,但按名称排序文件,我需要订购其创建日期返回的文件.如果项目是例程中的字符串,我该如何排序呢?我想使用枚举原因文件预计超过1k.
谢谢.
Jon*_*yna 13
我不确定你真的想要为该查询使用任务并行库.出于某些原因,请参阅此问题如何使用C#在磁盘上查找所有exe文件?.
至于通过创建日期枚举文件,我将通过创建一个新的启动功能DirectoryInfo的使用提供的路径,然后调用.EnumerateFiles(字符串模式,SearchOption searchOption)来获取所有符合模式的文件.最后,您可以通过返回的枚举中的FileInfo对象的CreationTime属性进行排序,然后返回完整的FileInfo对象,或者仅返回其名称,如下所示:
public static IEnumerable<string> GetFiles( string path, string[] searchPatterns, SearchOption searchOption = SearchOption.TopDirectoryOnly) {
DirectoryInfo dir = new DirectoryInfo(path);
var dirs = (from file in dir.EnumerateFiles(searchPatterns, searchOptions)
orderby file.CreationTime ascending
select file.Name).Distinct(); // Don't need <string> here, since it's implied
return dirs;
}
Run Code Online (Sandbox Code Playgroud)
注意:我目前无法访问编译器,但我相信上面的代码没有错误.
| 归档时间: |
|
| 查看次数: |
8499 次 |
| 最近记录: |