特定の条件に一致するディレクトリからすべてのファイルを削除したいが、リスト(またはIEnumerable)からアイテムを削除したい(後でそのリストを操作したいので、そのリストにアイテムが必要ないため)ファイルシステムにはもう存在しません!)
簡単な方法は、特定の条件に一致するすべてのアイテムをリストに集めてから、一時リストをループして、ファイルとリストアイテムの両方を元のリストから削除することです。ただし、最初にフィルター処理された一時リストを作成せずに、両方のタスクを1つのステップで実行するソリューションを見ていただければ幸いです。
// non-sense code example
lstFiles.ForEach(x => x.CreationTime < __now.AddDays(maxAge * -1), x => x.Delete())
.Remove(x);
// or...
newList/IEnumerable = lstFiles.Where(x => x.CreationTime < __now.AddDays(maxAge * -1), x.Delete()).RemoveAll(x)
別の質問:
条件に一致する(一致しない)すべてのアイテムが追加され、他のすべてのアイテムが削除されるファイルのリストを作成できますか?アディショナルのようなもの.WhereNot(x => x.Delete())
?
また...
IEnumerable<FileInfo> cleanedList =
(from files in directory.EnumerateFiles()
where files.CreationTime < __now.AddDays(maxAge * -1)
wherenot files.Delete()
select files)