所以我正在使用简单的
ImgFilesCount = ImgDirInfo.GetFiles("*.jpg").Length;
找出目录中有多少文件。但我需要它只计算文件名中包含正好26个字符的文件。我试过了
ImgFilesCount = ImgDirInfo.GetFiles("?????????????????????????.jpg").Length;
但它没有用。是唯一一个做foreach循环并检查每个文件名并递增计数器的选项吗?我有一种感觉,linq可能会用.Where语句来做这件事,但我不知道任何Linq。
答案 0 :(得分:5)
也许
int count = ImgDirInfo.EnumerateFiles("*.jpg").Count(f => f.Name.Length == 26);
EnumerateFiles
更有效率,因为它不需要在开始处理之前将所有文件加载到内存中。
答案 1 :(得分:3)
ImgFilesCount = ImgDirInfo.GetFiles("*.jpg")
.Where(file => file.Name.Length == 26)
.Count();
答案 2 :(得分:0)
这样的东西?
string[] files = Directory
.EnumerateFiles(@"c:\Users\x074\Downloads" , "*.jpg" , SearchOption.AllDirectories )
.Where( path => Path.GetFileName(path).Length > 20 )
.ToArray()
;