user1958628
user1958628

Reputation: 409

how can i list the file by creation date

I have ASP.NET (C#) 4.0.

My code is like this:

public IEnumerable<string> GetFiles(string searchPatternExpression)
{
    string path = @"D:\xxx\";
    SearchOption searchOption = SearchOption.TopDirectoryOnly;
    Regex reSearchPattern = new Regex(searchPatternExpression);
    return Directory
        .EnumerateFiles(path, "*", searchOption)
        .Where(file => reSearchPattern.IsMatch(Path.GetFileName(file)))
        .OrderBy(file => file);
}

How can I order by file's creation date?

Upvotes: 2

Views: 427

Answers (2)

Sergey Berezovskiy
Sergey Berezovskiy

Reputation: 236228

Thus you need to get file creation time, it's better to use DirectoryInfo to get FileInfos instead of simple strings:

public IEnumerable<string> GetFiles(string searchPatternExpression)
{
    string path = @"D:\xxx\";
    SearchOption searchOption = SearchOption.TopDirectoryOnly;
    Regex reSearchPattern = new Regex(searchPatternExpression);
    return new DirectoryInfo(path)
        .EnumerateFiles("*", searchOption)
        .Where(file => reSearchPattern.IsMatch(file.Name))
        .OrderBy(file => file.CreationTime)
        .Select(file => file.FullName); // return just names
}

Upvotes: 7

BartoszKP
BartoszKP

Reputation: 35891

Try this:

public IEnumerable<string> GetFiles(string searchPatternExpression)
{
    string path = @"D:\xxx\";
    SearchOption searchOption = SearchOption.TopDirectoryOnly;
    Regex reSearchPattern = new Regex(searchPatternExpression);
    return Directory
        .EnumerateFiles(path, "*", searchOption)
        .Where(file => reSearchPattern.IsMatch(Path.GetFileName(file)))
        .OrderBy(file => new FileInfo(file).CreationTime);
}

Upvotes: 0

Related Questions