2014-05-02 20 views
1

我有一个目录,像FEB2014, MAR2013等子目录,它也可以有像日志或其他子目录。如何列出具有特定日期模式的所有子目录在c#

我的问题是如何找到具有某些日期模式(对于我的情况是MMMyyyy)像FEB2014, MAR2013的所有子目录。我更喜欢使用LINQ

+0

你只能看一个深度? – Jonesopolis

+0

您的示例与您提供的日期模式不匹配;你的意思是'MMMyyyy'? –

+0

对不起,我应该是MMMyyyy。 – GLP

回答

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对象,而不是直接的字符串名称的数组。你也需要通过一个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(); 
+0

我试过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

+0

@GLP上遇到错误,请根据您的要求编辑答案。您将从您的方法中获取一组“DirectoryInfo”对象,而不是一串字符串。尝试编辑的代码,并让我知道它是否工作。 – Habib

+1

感谢。正是我需要的。 – GLP

相关问题