[英]How do I return a DirectoryInfo object consisting of numeric folder names?
我正在尝试查询文件夹并仅返回带有数字文件夹名称的文件夹。 问题是我在DirectoryInfo[]
对象中需要它。
我可以这样做(它有效):
List<string> subDirList = Directory.GetDirectories(rootPath, "*", SearchOption.TopDirectoryOnly)
.Where(f => Regex.IsMatch(f, @"[\\/]\d+$")).ToList();
但我真的需要这样的东西:
DirectoryInfo[] subDirs = Directory.GetDirectories(rootPath, "*", SearchOption.TopDirectoryOnly)
.Where(f => Regex.IsMatch(f, @"[\\/]\d+$"));
有什么建议么?
您可以使用.Select(..)
将其映射到DirectoryInfo
,然后使用ToArray()
:
DirectoryInfo[] subDirs = Directory.GetDirectories(rootPath, "*", SearchOption.TopDirectoryOnly)
.Where(f => Regex.IsMatch(f, @"[\\/]\d+$"))
.Select(x => new DirectoryInfo(x)) //convert it to a DirectoryInfo
.ToArray(); // make the result an Array
实例化DirectoryInfo
类型的对象,然后进行查询。 DirectoryInfo.GetDirectories方法将返回所需的DirectoryInfo
类型数组
DirectoryInfo dirInfo = new DirectoryInfo(yourpath);
DirectoryInfo[] subDirs = dirInfo.GetDirectories("*", SearchOption.TopDirectoryOnly)
.Where(f => Regex.IsMatch(f.FullName, @"[\\/]\d+$")).ToArray();
编辑:
在C#7中,您可以避免使用带有简单int.TryParse
正则表达式:
DirectoryInfo[] subDirs = dirInfo.GetDirectories("*", SearchOption.TopDirectoryOnly)
.Where(f => int.TryParse(f.Name, out _)).ToArray();
在C#7下面,你需要一个int
类型的额外变量作为out
值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.