繁体   English   中英

如何从文件夹中按日期范围获取所有目录?

[英]How to get all Directories from folder with by date range?

我需要从特定文件夹中获取所有目录,日期范围如下:

StartDate <= Dir.CreatedDate <= EndDate

我正在尝试使用GetDirectories方法进行过滤,但是没有运气:

RootDirInfo.GetDirectories()
     .Where(x => new DirectoryInfo(x).CreationTime.Date == DateTime.Today.Date);

让我将其拆分为多个函数以使其更加清晰(并且您将不会创建多个对象):

private static bool IsInRange(DateTime time, DateTime min, DateTime max)
{
    return time >= min && time <= max;
}

现在,使用LINQ,您可以简单地编写:

public static IEnumerable<DirectoryInfo> GetDirectories(
    DirectoryInfo directory,
    DateTime startDate,
    DateTime endDate)
{
    return directory.GetDirectories()
        .Where(x => IsInRange(x.CreationTime, startDate, endDate));
}

如果要紧凑:

public static IEnumerable<DirectoryInfo> GetDirectories(
    DirectoryInfo directory,
    DateTime startDate,
    DateTime endDate)
{
    return directory.GetDirectories()
        .Where(x => x.CreationTime >= startDate && x.CreationTime <= endDate);
}

最后的注意:您正在做new DirectoryInfo(x)但是错了,因为,我想RootDirInfoDirectoryInfo ,然后GetDirectories()将返回DirectoryInfo[]准备使用(请参阅我的最后一个代码片段)。

System.DateTime类型确实支持>=<=运算符,因此您可以使用它们进行比较:

RootDirInfo.GetDirectories()
    .Where(x => x.CreationTime >= startDate && new x.CreationTime <= endDate);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM