2013-09-25 3 views
2

У меня есть ASP.NET (C#) 4.0.как я могу указать файл по дате создания

Мой код выглядит так:

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); 
} 

Как можно заказать по дате создания файла?

ответ

6

Таким образом, вы должны получить время создания файла, то лучше использовать DirectoryInfo, чтобы получить FileInfo с вместо простых строк:

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 
} 
0

Попробуйте это:

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); 
} 
+2

Необходим дополнительный .select() чтобы вернуться к строке. Исправьте это, и он будет работать ... но ему нужен дополнительный доступ к диску для каждого соответствующего файла. –

Смежные вопросы