如何使用 GetFiles 方法搜索文件(多个条件)
本文关键字:条件 文件 何使用 GetFiles 方法 搜索 | 更新日期: 2023-09-27 17:57:16
下面的代码显然在目录中搜索包含"FINAL"一词的文件,但我想知道的是我可以添加到其搜索条件中吗? 我有一个Well_Name和Actual_Date字符串,除了"FINAL"单词之外,我还想在文件名中搜索。 思潮? 提前谢谢。
DirectoryInfo myDir = new DirectoryInfo("C://DWGs");
var files = myDir.GetFiles("FINAL");
//Can I do something like this to add to my search criteria?
var files = myDir.GetFiles("FINAL" +
drow["Well_Name"].ToString() +
drow["Actual_Date"]);
var files = myDir.GetFileInfo()
.Where(f => f.FileName.Contains("FINAL") ||
f.FileName.Contains(drow["Well_Name"].ToString()) ||
f.FileName.Contains(drow["Actual_Date"]));
由于GetFiles()
返回FileInfo
的可枚举集合,因此只需检查所有文件名是否符合所需的条件。
如果你想在这方面变得非常通用,你可以写一个看起来像这样的函数
public IEnumerable<FileInfo> addCriteria(IEnumerable<FileInfo> FileList,
List<String> searchCriteria)
{
var newFileList = FileList;
foreach(String criteria in searchCriteria)
{
newFileList = newFileList.Where(f => f.FileName.Contains(criteria).AsQueryable();
}
return newFileList.AsEnumerable();
}
GetFiles
方法不支持多个搜索条件,但有一种简单的方法可以解决此限制。为每个文件扩展名运行一个 getFile,然后将返回的数组"合并"到一个List<>
中。然后使用 List 的 ToArray 方法将 List "转换"回 Array。我使用了这种方法,它对我有用代码如下(不要忘记引用"using System.Collections.Generic;"命名空间):
// Get the DirectoryInfo and FileInfo objects for aspx and html files.
FileInfo[] files_aspx = dir.GetFiles("*.aspx");
FileInfo[] files_html = dir.GetFiles("*.html");
List<FileInfo> files = new List<FileInfo>();
files.AddRange(files_aspx);
files.AddRange(files_html);
files.ToArray();