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

时间:2013-12-11 14:36:15

标签: c# .net c#-4.0 datetime directory

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

StartDate< = Dir.CreatedDate< = EndDate

我试图用GetDirectories方法过滤而没有运气:

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

2 个答案:

答案 0 :(得分:5)

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

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[]准备使用(请参阅我的上一个代码段。)

答案 1 :(得分:4)

System.DateTime类型支持运营商>=<=,因此您可以使用这些进行比较:

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