0

所以我使用简单的

ImgFilesCount = ImgDirInfo.GetFiles("*.jpg").Length;

找出一个目录中有多少个文件。但我需要它只计算文件名中正好有 26 个字符的文件。我试过了

ImgFilesCount = ImgDirInfo.GetFiles("?????????????????????????.jpg").Length;

但它没有用。是执行 foreach 循环并检查每个文件名并增加计数器的唯一选择吗?我有一种感觉 linq 可能可以用 .Where 语句来做到这一点,但我不知道任何 Linq。

4

3 回答 3

5

也许

int count = ImgDirInfo.EnumerateFiles("*.jpg").Count(f => f.Name.Length == 26);

EnumerateFiles效率更高,因为它不需要在开始处理之前将所有文件加载到内存中。

  • 使用 EnumerateFiles 时,您可以在返回整个集合之前开始枚举 FileInfo 对象的集合。
  • 使用 GetFiles 时,必须等待返回整个 FileInfo 对象数组,然后才能访问该数组。
于 2013-05-17T23:55:59.117 回答
3
ImgFilesCount = ImgDirInfo.GetFiles("*.jpg")
                          .Where(file => file.Name.Length == 26)
                          .Count();
于 2013-05-17T23:56:00.557 回答
0

像这样的东西?

        string[] files = Directory
                         .EnumerateFiles(@"c:\Users\x074\Downloads" , "*.jpg" , SearchOption.AllDirectories )
                         .Where( path => Path.GetFileName(path).Length > 20 )
                         .ToArray()
                         ;
于 2013-05-18T00:05:05.740 回答