我有一个目录,像FEB2014, MAR2013
等子目录,它也可以有像日志或其他子目录。如何列出具有特定日期模式的所有子目录在c#
我的问题是如何找到具有某些日期模式(对于我的情况是MMMyyyy
)像FEB2014, MAR2013
的所有子目录。我更喜欢使用LINQ
。
我有一个目录,像FEB2014, MAR2013
等子目录,它也可以有像日志或其他子目录。如何列出具有特定日期模式的所有子目录在c#
我的问题是如何找到具有某些日期模式(对于我的情况是MMMyyyy
)像FEB2014, MAR2013
的所有子目录。我更喜欢使用LINQ
。
DateTime temp;
var filtered = directories.Where(r => DateTime.TryParseExact(r,
"MMMyyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out temp))
.ToList();
这将返回仅与格式MMMyyyy
名称的目录。考虑如果你的directories
阵列组成如下:
//string[] directories = Directory.GetDirectories("yourPath");
string[] directories = new[]
{
"FEB2014",
"MAR2013",
"LOG",
"SOMETHING",
"APR2014",
"MAY2014"
};
上述查询将返回四条记录。
FEB2014
MAR2013
APR2014
MAY2014
的评论:
DirectoryInfo.GetDriectories
返回DirectoryInfo
对象,而不是直接的字符串名称的数组。你也需要通过一个DateTime
对象作为输出参数,你可以像下面这样做:
DateTime temp;
var dirInfo = new DirectoryInfo(MyApp.App_Code.Global.FileLocation)
.GetDirectories()
.Where(d => DateTime.TryParseExact(d.Name,
"MMMyyyy", CultureInfo.InvariantCulture,
DateTimeStyles.None,
out temp))
.OrderBy(d => d.LastAccessTime).Last();
我试过dirInfo = new DirectoryInfo(MyApp.App_Code.Global.FileLocation).GetDirectories().Where(d => DateTime.TryParseExact(d,“MMMyyyy”,CultureInfo.InvariantCulture,DateTimeStyles.None,out new DateTime()) ).ToList().OrderBy(d => d.LastAccessTime).Last();但是,我在TryParseExact – GLP
@GLP上遇到错误,请根据您的要求编辑答案。您将从您的方法中获取一组“DirectoryInfo”对象,而不是一串字符串。尝试编辑的代码,并让我知道它是否工作。 – Habib
感谢。正是我需要的。 – GLP
你只能看一个深度? – Jonesopolis
您的示例与您提供的日期模式不匹配;你的意思是'MMMyyyy'? –
对不起,我应该是MMMyyyy。 – GLP