我需要从日期范围的特定文件夹中获取所有目录,如:
我试图用GetDirectories
方法过滤而没有运气:
RootDirInfo.GetDirectories()
.Where(x => new DirectoryInfo(x).CreationTime.Date == DateTime.Today.Date);
答案 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)
但是错误,因为我认为RootDirInfo
是DirectoryInfo
,然后GetDirectories()
会返回DirectoryInfo[]
准备使用(请参阅我的上一个代码段。)
答案 1 :(得分:4)