如何仅在使用 DirectoryInfo().GetFiles 选择两个日期时计算工作日?

How can I count weekdays only when I am choosing two dates using DirectoryInfo().GetFiles?

我正在尝试找到一个与 DirectoryInfo().GetFiles 函数一起使用的函数,以便在我查找某个日期范围内的文件时只计算工作日。

我找到的唯一函数是

.Count(x => x.DayOfWeek != DayOfWeek.Saturday && x.DayOfWeek != DayOfWeek.Sunday);

fileInfos.Where

不兼容
DateTime d1 = DateTime.Now;
d2 = d1.AddDays(FileAgeYounger);
DateTime d3 = DateTime.Now;
d4 = d3.AddDays(FileAgeOlder);

if (subfolders == true & 
    FileExtension != null & 
    Fileprefix != null & 
    FileUseRelativeAgeOlder == true & 
    FileUseRelativeAgeYounger == false & CountWeekDays == true)
{
    FileInfo[] fileInfos = new DirectoryInfo(FolderLocation).GetFiles("*.*", SearchOption.AllDirectories);
    IEnumerable<FileInfo> files = fileInfos.Where((f) => f.Extension.Equals(FileExtension)
                                                      && f.Name.StartsWith(Fileprefix)
                                                      && f.CreationTime >= d3
                                                      && f.CreationTime <= d4);
}                        

在此代码中...

.Count(x => x.DayOfWeek != DayOfWeek.Saturday && x.DayOfWeek != DayOfWeek.Sunday);

...xFileInfo,它没有 DayOfWeek 属性。相反,您需要使用 FileInfo 的三个 *Time 属性中的任何一个是合适的;查看您传递给 .Where() 的条件似乎是 CreationTime...

int count = files.Count(x => x.CreationTime.DayOfWeek != DayOfWeek.Saturday && x.CreationTime.DayOfWeek != DayOfWeek.Sunday);

或者,可以通过使用 .Select() 检索所需的 *Time 属性...

来使该代码工作
int count = files
    .Select(f => f.CreationTime)
    .Count(x => x.DayOfWeek != DayOfWeek.Saturday && x.DayOfWeek != DayOfWeek.Sunday);

在这种情况下,xDateTime

此外,请记住旧版 GetFiles() method and the newer EnumerateFiles() method...

之间的区别

The EnumerateFiles and GetFiles methods differ as follows:

  • When you use EnumerateFiles, you can start enumerating the collection of FileInfo objects before the whole collection is returned.
  • When you use GetFiles, you must wait for the whole array of FileInfo objects to be returned before you can access the array.

Therefore, when you are working with many files and directories, EnumerateFiles can be more efficient.

EnumerateFiles() 非常适合这种文件系统 search/filtering,并且我认为通常是首选方法。