下面我有一个方法应该删除文件的所有版本,除了最新版本。我的Except
电话没有产生我期望的结果,在再次查看文档后,我似乎无法理解为什么。出于调试的目的,我已将 LINQ 查询Except
移出我的 foreach 条件。当我调试newest
正确设置为最新的日志文件时,下一行执行后toDelete
仍然包含newest
,为什么?我在这里想念什么?所有相关代码如下。该方法被称为传递,文件设置为日志名称的静态部分,之后它有一个时间戳。两者都Where(x => x.Contains(file))
完全按照我的预期工作。
public static void CleanUpLocalCopies(string file)
{
string[] localFiles = Directory.GetFiles(".\\");
string newest = files.Where(x => x.Contains(file)).OrderByDescending(x => x).FirstOrDefault();
var toDelete = localFiles.Where(x => x.Contains(file)).Except(new string[] { newest });
foreach (string f in toDelete)
{
File.Delete(f);
}
}