L'approccio più canonico quando si desidera eliminare i file per una certa durata è utilizzare LastWriteTime del file (l'ultima volta che il file è stato modificato):
Directory.GetFiles(dirName)
.Select(f => new FileInfo(f))
.Where(f => f.LastWriteTime < DateTime.Now.AddMonths(-3))
.ToList()
.ForEach(f => f.Delete());
(Quanto sopra basato sulla risposta di Uri ma con LastWriteTime.)
Ogni volta che senti persone parlare di eliminare file più vecchi di un certo periodo di tempo (che è un'attività piuttosto comune), farlo in base al LastModifiedTime del file è quasi sempre quello che stanno cercando.
In alternativa, per circostanze molto insolite è possibile utilizzare quanto segue, ma utilizzarli con cautela poiché vengono forniti con avvertenze.
CreationTime
.Where(f => f.CreationTime < DateTime.Now.AddMonths(-3))
L'ora in cui il file è stato creato nella posizione corrente. Tuttavia, fai attenzione se il file è stato copiato, sarà l'ora in cui è stato copiato e CreationTimesarà più recente di quello del file LastWriteTime.
LastAccessTime
.Where(f => f.LastAccessTime < DateTime.Now.AddMonths(-3))
Se si desidera eliminare i file in base all'ultima volta che sono stati letti, è possibile utilizzarlo, ma non è garantito che verrà aggiornato poiché può essere disabilitato in NTFS. Controlla fsutil behavior query DisableLastAccessse è acceso. Inoltre, in NTFS, potrebbe essere necessaria fino a un'ora per l'aggiornamento di LastAccessTime del file dopo l'accesso.