Никак не могу представить в головке функцию, которая бы обходила файлы сравнивая их имена с DateTime.Now.AddDays(-1).ToShortDateString().ToString()
И если не находила, то уменьшала число в AddDays ещё на один.
Есть список файлов, который я извлекаю из папки. Все файлы там имеют имена в виде дат(но это не значит, что они загружались именно тогда) 13.12.2018.* - например. Представим, что сейчас самый последний там 5.12.2018. Как извлечь имя самого последнего файла, сравнивая его с маской. Я понимаю, что это должен быть перебор сравнения файлов через форич, и если все результаты фолс - уменьшить ещё на день и повторить.
Алгоритм мне видится следующий:
А вот код попробуйте написать сами )
UPD:
А, всё-таки, как будет тогда выглядеть такая сортировка?
var lastFileByName = Directory
.GetFiles(@"C:\temp\", "*.zip")
.Select(f =>
{
DateTime date;
var n = new FileInfo(f).Name.Replace(".zip", string.Empty);
return DateTime.TryParseExact(n, "d.M.yyyy", null, DateTimeStyles.None, out date)
? new {Date=date, FileName = f}
: null;
})
.Where(it=> it != null)
.OrderByDescending(it => it.Date)
.FirstOrDefault()?
.FileName;
самое простое это вот это. Можно же получить дату создания и изменения файла
DateTime creation = File.GetCreationTime(@"file");
DateTime modification = File.GetLastWriteTime(@"file");
ну и потом отсоритрвоать даты как вам угодно
как то так
string [] fileEntries = Directory.GetFiles(targetDirectory);
foreach (var d in fileEntries )
{
dates.Add(File.GetLastWriteTime(d));
}
var result = dates.Order(v => v).Last();
Видимо проблема в том, что ты не знаешь, как парсить дату.
string fileName = "5.9.2018";
DateTime date = DateTime.ParseExact(fileName, "d.M.yyyy", null);
Вообще можно было бы про это и задавать вопрос.
Итог: сделал так, без парссинга даты:
DirectoryInfo directory = new DirectoryInfo(@"C:\temp\");
var ffiles = directory.GetFiles();
string lastDate = "";
int t = 0;
bool check = false;
do
{
foreach (var filesdate in ffiles)
{
string inputDate = DateTime.Now.AddDays(t).ToShortDateString().ToString();
check = inputDate+".zip" == filesdate.Name;
if (check)
{
lastDate = inputDate;
break;
}
}
t = t - 1;
}
while (check != true);
Далее я уже использую lastDate
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
помогите составить правильный sql запрос с условием для таблицы статистики посещения к примеру есть таблица
Настроил форму обратной связи в Netcat, но задача стоит сделать 2 формы на одной страницеСоздал под каждую свой шаблон но столкнулся с проблемой,...