Как отфильтровать строки csv по диапазону дат в C#
Я использую csvHelper для фильтрации csv-файлов. У меня был код ниже, но я не знаю, как обрабатывать отфильтрованные записи в операторах if. Я хочу написать его снова только строками в пределах диапазона дат.
Что я уже пробовал:
var dFm = new DateTime(2015, 01, 25); var dTo = new DateTime(2015, 01, 27); using (var reader = File.OpenText(@"sample.csv")) { var csv = new CsvReader(reader); while (csv.Read()) { var date = csv.GetField<DateTime>("Date"); if (date >= dFm && date <= dTo) { // process the filtered out records } } }
Tomas Takac
Есть класс CsvWriter, попробуйте его использовать. Однако вам нужно писать не в исходный файл, а в другой.
Member 13264296
Нет другого способа переписать данные в тот же каталог?
Richard MacCutchan
Нет, вы не можете перезаписать тот же файл, который вы сейчас читаете.
Member 13264296
Это не очень хорошо для сохранения памяти, особенно если у нас есть много уникальных csv-файлов.
Richard MacCutchan
Это не имеет ничего общего с сохранением памяти.
F-ES Sitecore
Если вы хотите создать дубликат файла без определенных значений, то вы можете записать нужные значения во временный файл (например, если обрабатываемый вами файл xyx.csv, то создайте файл с именем xyz_temp.csv. Когда весь файл будет обработан, удалите исходный файл и переименуйте новый.
Afzaal Ahmad Zeeshan
Можете ли вы получить список объектов или записей? Если это так,то используйте LINQ для фильтрации элементов.
Member 13264296
Это не очень хорошая идея, если у нас есть много csv-файлов для фильтрации.
Afzaal Ahmad Zeeshan
Так или иначе, вы будете перебирать коллекцию.
LINQ не мешает вам использовать несколько файлов (с разными именами файлов).
Member 13264296
Можете ли вы показать мне некоторые коды базы на мой вопрос, потому что я не знаю, как кодировать LINQ.