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

本文关键字:日期 子目录 模式 | 更新日期: 2023-09-27 18:01:25

我有一个目录,它有FEB2014, MAR2013等子目录。它也可以有Log或其他子目录。

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

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

使用类似于的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();