我想从与特定条件匹配的目录中删除每个文件,但我也希望从我的列表(或 IEnumerable)中删除这些项目(因为我想稍后使用该列表并且不希望其中有任何项目文件系统上不再存在!)
一种简单的方法是将与特定条件匹配的每个项目收集到一个列表中,然后遍历临时列表并从原始列表中删除文件和列表项。但我很高兴看到一个解决方案,其中两个任务都在一个步骤中完成,而无需先创建过滤的临时列表。
// 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)