0

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

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

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 的值

调试

文件中的一个文件: 文件中的一个文件

从日期值:

起始日期值

编辑:

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

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

            }
4

4 回答 4

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>();
}
于 2013-10-02T14:01:43.117 回答
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>();
}
于 2014-01-15T16:05:46.150 回答
1

如果 tpFrom 和 tpTp 是 Pickers,也许下面的就可以了

DateTime fromDate = tpFrom.Value.Date;
DateTime toDate = tpTo.Value.Date;
于 2013-10-02T12:54:11.647 回答
0

我认为 Where 子句不执行,请检查此链接。了解有关它的更多详细信息。在 LINQ 中,查询的执行通常推迟到您实际请求数据的那一刻。在与 files.Count() 的行中,您实际上得到了值。查看有关LINQ 和错误执行的更多信息。

您应该尝试以下方法:

      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){...} 
于 2013-10-02T13:04:13.353 回答