Получение файлов по дате создания

101
14

У меня есть проблема с получением некоторых файлов с диапазоном дат. Я искал здесь и нашел много ответов, но я не могу решить свою проблему.

Итак, у меня есть этот метод для получения этих файлов:

DateTime fromDate = tpFrom.Value;
DateTime toDate = tpTo.Value;
var files = new DirectoryInfo(origemPath).GetFiles()
.Where(
f => f.CreationTime.Date >= fromDate &&
f.CreationTime.Date <= toDate);

foreach (var file in files)
{
...
}

Но это все файлы, игнорируя...

fromDate и toDate - значение из DateTimePicker

отладки

Один файл в файлах: one file in files

fromDate:

fromDate value

РЕДАКТИРОВАТЬ:

Я попробовал все ответы здесь, и ничего не получилось. Как мне не нужен лучший метод, я решил свою проблему следующим образом:

var files = new DirectoryInfo(origemPath).GetFiles();
foreach (var file in files)
{
if (file.CreationTime.Date >= fromDate && file.CreationTime.Date <= toDate)
{
...
}

}

спросил(а) 2013-10-02T15:46:00+04:00 7 лет назад
1
Решение
59

Если tpFrom и tpTp являются Pickers, возможно, следующее будет выполнять работу

DateTime fromDate = tpFrom.Value.Date;
DateTime toDate = tpTo.Value.Date;

ответил(а) 2013-10-02T15:54:00+04:00 7 лет назад
58

Попробуйте что-то вроде этого:


private List<string> GetFiles(DateTime toDate, DateTime fromDate, string directoryName)
{
if (toDate > fromDate)
{
List<string> list = Directory.GetFiles(directoryName).ToList();

return list.Where(f => File.GetCreationTime(f) <= toDate && File.GetCreationTime(f) => fromDate).ToList();
}
return new List<string>();
}

ответил(а) 2014-01-15T19:05:00+04:00 6 лет, 9 месяцев назад
57

private List<string> GetFiles(DateTime toDate, DateTime fromDate, string directoryName)
{
if (toDate > fromDate)
{
List<string> list = Directory.GetFiles(directoryName).ToList();

return list.Where(f => File.GetCreationTime(f) <= toDate && File.GetCreationTime(f) => fromDate).ToList();
}
return new List<string>();
}

ответил(а) 2013-10-02T17:01:00+04:00 7 лет назад
41

Я думаю, что предложение Where не выполняется, проверьте эту ссылку. чтобы узнать больше об этом. В LINQ выполнение запроса обычно откладывается до момента, когда вы действительно запрашиваете данные. В строке с files.Count() вы фактически получаете значения. Узнайте больше о LINQ и отложенном исполнении.

Вы должны попробовать что-то вроде следующего:

      DirectoryInfo diInbox = new DirectoryInfo(location);
FileInfo[] InboxFiles = diInbox.GetFiles();
var files = from file in InboxFiles
where file.CreationTime >= FromDate
select file;
foreach (var file in files){...}

ответил(а) 2013-10-02T16:04:00+04:00 7 лет назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема