按创建日期获取文件

时间:2013-10-02 12:46:13

标签: c#

我有一个问题是获取一些日期范围的文件。我在这里搜索并找到了很多答案,但我无法解决我的问题。

所以,我有这个方法来获取这些文件:

DateTime fromDate = tpFrom.Value;
DateTime toDate = tpTo.Value;
var files = new DirectoryInfo(origemPath).GetFiles()
           .Where(
               f => f.CreationTime.Date >= fromDate && 
               f.CreationTime.Date <= toDate);

foreach (var file in files)
{
   ...
}               

但是得到所有文件,忽略了哪里......

fromDate和toDate是DateTimePicker

中的值

调试运行

文件中的一个文件: one file in files

fromDate value:

fromDate value

编辑:

我在这里尝试了所有答案,但没有任何效果。我怎么不需要最好的性能方法,我解决了我的问题:

var files = new DirectoryInfo(origemPath).GetFiles();
    foreach (var file in files)
            {
                if (file.CreationTime.Date >= fromDate && file.CreationTime.Date <= toDate)
                {
                   ...
                }

            }

4 个答案:

答案 0 :(得分:1)

如果tpFrom和tpTp是Pickers,那么以下可能会完成这项工作

DateTime fromDate = tpFrom.Value.Date;
DateTime toDate = tpTo.Value.Date;

答案 1 :(得分:1)

private List<string> GetFiles(DateTime toDate, DateTime fromDate, string directoryName)
{
    if (toDate > fromDate)
    {
        List<string> list = Directory.GetFiles(directoryName).ToList();

        return list.Where(f => File.GetCreationTime(f) <= toDate && File.GetCreationTime(f) => fromDate).ToList();
    }
    return new List<string>();
}

答案 2 :(得分:1)

尝试这样的事情:

private List<string> GetFiles(DateTime toDate, DateTime fromDate, string directoryName)
{
    if (toDate > fromDate)
    {
        List<string> list = Directory.GetFiles(directoryName).ToList();

        return list.Where(f => File.GetCreationTime(f) <= toDate && File.GetCreationTime(f) => fromDate).ToList();
    }
    return new List<string>();
}

答案 3 :(得分:0)

我认为Where子句不会执行,请查看此link.以了解有关它的更多详细信息。在LINQ中,查询的执行通常会推迟到您实际请求数据的那一刻。在files.Count()的行中,您实际获得了值。详细了解LINQ and dererred execution

您应该尝试以下内容:

      DirectoryInfo diInbox = new DirectoryInfo(location);
  FileInfo[] InboxFiles = diInbox.GetFiles();
    var files = from file in InboxFiles
                where file.CreationTime >= FromDate 
                select file;
    foreach (var file in files){...}