根据日期范围在c#中搜索包含日期模式名称的文件

时间:2012-12-14 01:30:34

标签: c# file search

我有一些这种模式的文件:

PrefixyyyyMMddHHmmss.txt

该前缀始终相同。

例如: Prefix20120830115800.txt

Prefix20120829114200.txt

Prefix20120829134621.txt

我想编写一个函数来获取一天和范围,并返回其名称在当天输入范围内的所有文件:

ReadFiles(string filesLocation, DateTime fromDate, int range)

现在我使用这种方法:

for (int i = 0; i <= range; i++)
{
    SearchFolderForFiles(location, fromDate.AddDays(i));
}

SearchFolderForFiles(//params)
{
//…
  string searchTemplate = string.Format("Prefix{0:yyyyMMdd}*.txt", date);
  DirectoryInfo di = new DirectoryInfo(location);
  FileInfo[] myFiles = di.GetFiles(searchTemplate);
//…
}

但我认为这应该是更好的方式(特别是我们的范围没有分开的日子)

由于

1 个答案:

答案 0 :(得分:2)

你可以用linq做到这一点。

可怕的例子,但你可以看到我得到的东西:)

        DateTime startDate = DateTime.Now;
        DateTime endDate = DateTime.Now;

        var myFiles = new DirectoryInfo(location).EnumerateFiles()
            .Where(f => DateTime.Parse(System.IO.Path.GetFileNameWithoutExtension(f.Name).Replace("Prefix", "")) >= startDate
            && DateTime.Parse(System.IO.Path.GetFileNameWithoutExtension(f.Name).Replace("Prefix", "")) <= endDate);