Я не уверен, что ваш вопрос касается архивирования, выбора файлов определенного года / месяца или обоих.
Про зиппинг Петр уже упоминал 7-zip и SharpZipLib. У меня есть только один опыт работы с последним, но с ним все хорошо, с ним легко работать.
Для группировки ваших файлов это можно сделать, выполнив итерацию всех файлов в папке и сгруппировав их по дате создания или дате последнего изменения.
псевдо:
var files = new Dictionary<DateTime, IList<string>>();
foreach (var file in Directory.GetFiles(...)) {
var fi = new FileInfo(file);
var date = fi.CreatedDate();
var groupDate = new DateTime(date.Year, date.Month);
if (!files.ContainsKey(groupDate)) files.Add(groupDate, new Collection<string>());
files[groupDate].Add(file);
}
теперь у вас должен быть словарь, содержащий отдельные ключи года / месяца, а foreach - список файлов, принадлежащих этой группе. Так что на молнии
Псевдо:
foreach (var entry in files) {
var date = entry.Key;
var list = entry.Value;
// create zip-file named date.ToString();
foreach (var file in list) {
// add file to zip
}
}