如何 return 由数字文件夹名称组成的 DirectoryInfo 对象?
How do I return a DirectoryInfo object consisting of numeric folder names?
我正在尝试查询一个文件夹,并且 return 仅查询具有数字文件夹名称的文件夹。问题是我在 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+$"))
<b>.Select(x => new DirectoryInfo(x))</b> //convert it to a DirectoryInfo
<b>.ToArray()</b>; // make the result an Array
实例化 DirectoryInfo
and then make your query. The method DirectoryInfo.GetDirectories 类型的对象将 return 所需的 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
值
我正在尝试查询一个文件夹,并且 return 仅查询具有数字文件夹名称的文件夹。问题是我在 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+$"))
<b>.Select(x => new DirectoryInfo(x))</b> //convert it to a DirectoryInfo
<b>.ToArray()</b>; // make the result an Array
实例化 DirectoryInfo
and then make your query. The method DirectoryInfo.GetDirectories 类型的对象将 return 所需的 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
值