如何在c#中列出具有特定日期模式的所有子目录

时间:2014-05-02 13:58:54

标签: c# linq

我有一个目录,其中包含FEB2014, MAR2013等子目录。它还可以包含Log或其他子目录。

我的问题是如何查找具有特定日期模式的所有子目录(我的情况为MMMyyyy),如FEB2014, MAR2013。我更喜欢使用LINQ

1 个答案:

答案 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();