我有一个目录,其中包含FEB2014, MAR2013
等子目录。它还可以包含Log或其他子目录。
我的问题是如何查找具有特定日期模式的所有子目录(我的情况为MMMyyyy
),如FEB2014, MAR2013
。我更喜欢使用LINQ
。
答案 0 :(得分:4)
使用DateTime.TryParseExact
之类的:
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
对象的数组,而不是直接返回字符串名称。你还需要为out参数传递一个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();