Order (and list) a directory listing by file creation date?

So, I have this procedure:

public static IEnumerable<string> GetFiles( string path, string[] searchPatterns, SearchOption searchOption = SearchOption.TopDirectoryOnly) {
    return searchPatterns.AsParallel()
                         .SelectMany(searchPattern => 
                             Directory.EnumerateFiles(path, searchPattern, searchOption))
                         .OrderBy<string, string>( (f) => f)
                         .Distinct<string>();
}

and it works, but ordering files by its name, and I need to order the files returned by its creation date. How can I sort if the item is a string similar to a procedure. I want to use files named Enumerate, expected to be more than 1k.

Thank.

+5
source share
2 answers

I'm not sure if you really want to use a parallel task library for this query. For some reason, see this question. How to find all exe files on disk using C #? .

, , DirectoryInfo . EnumerateFiles (string pattern, SearchOption searchOption), , . , CreationTime FileInfo , FileInfo, Name, :

public static IEnumerable<string> GetFiles( string path, string[] searchPatterns, SearchOption searchOption = SearchOption.TopDirectoryOnly) {
    DirectoryInfo dir = new DirectoryInfo(path);
    var dirs = (from file in dir.EnumerateFiles(searchPatterns, searchOptions)
            orderby file.CreationTime ascending
            select file.Name).Distinct(); // Don't need <string> here, since it implied
    return dirs;
}

. , , .

+12
+2

All Articles