Linq 中的目录和子目录过滤器
Directory and subdirectory Filter in Linq
我需要列出路径中的所有目录。我只需要获取最后一个子目录路径而不是所有路径。
即对于
pathbase/2016/01
我不需要 pathbase/2016 但 pathbase/2016/01
现在我正在使用这个代码:
List<string> dirs = new List<string>(Directory.EnumerateDirectories(pathBase));
string[] entries = System.IO.Directory.GetDirectories(pathBase, "*",
SearchOption.AllDirectories);
var listDir = from dir
in entries
return listDir.ToList();
我可以在 Linq 中使用什么类型的过滤器来排除这个目录?
谢谢。
你的意思是你需要所有的叶子目录(没有子目录的目录)?
如果是这样就应该这样做
// First off, don't use GetDirectories on the static Directory class, it returns a string path and not a DirectoryInfo which isn't very usefull here, instead create a DirectoryInfo and go from there:
var RootDirectory = new DirectoryInfo(pathBase);
// Then queries all of it's subdirectories and filter on those
var listDir = RootDirectory.GetDirectories("*",SearchOption.AllDirectories)
.Where(dir=>!dir.GetDirectories().Any())
.ToList();
我需要列出路径中的所有目录。我只需要获取最后一个子目录路径而不是所有路径。
即对于
pathbase/2016/01
我不需要 pathbase/2016 但 pathbase/2016/01
现在我正在使用这个代码:
List<string> dirs = new List<string>(Directory.EnumerateDirectories(pathBase));
string[] entries = System.IO.Directory.GetDirectories(pathBase, "*",
SearchOption.AllDirectories);
var listDir = from dir
in entries
return listDir.ToList();
我可以在 Linq 中使用什么类型的过滤器来排除这个目录?
谢谢。
你的意思是你需要所有的叶子目录(没有子目录的目录)?
如果是这样就应该这样做
// First off, don't use GetDirectories on the static Directory class, it returns a string path and not a DirectoryInfo which isn't very usefull here, instead create a DirectoryInfo and go from there:
var RootDirectory = new DirectoryInfo(pathBase);
// Then queries all of it's subdirectories and filter on those
var listDir = RootDirectory.GetDirectories("*",SearchOption.AllDirectories)
.Where(dir=>!dir.GetDirectories().Any())
.ToList();