我有一个关于大量文件的详细列表。该列表包括文件ID、上次修改日期和文件路径。问题是,有些文件存在重复,这些重复的文件是旧版本,并且有时具有不同的文件路径。我想只保留最新版本的文件,而不考虑文件路径。因此,我创建了一个循环来遍历排序后的列表,检查ID是否唯一,如果唯一,则存储在一个新的唯一列表中。
var ordered = list.OrderBy(x => x.ID).ThenByDescending(x => x.LastModifiedDate);
List<Item> unique = new List<Item>();
string curAssetId = null;
foreach (Item result in ordered)
{
if (!result.ID.Equals(curAssetId))
{
unique.Add(result);
curAssetId = result.ID;
}
}
然而,这仍然允许重复项进入数据库,我无法弄清楚为什么这段代码不能像预期的那样工作。所谓的重复是指文件具有相同的ID但具有不同的文件路径,就像我之前说过的那样,这不应该是一个问题。我只想要最新版本,无论路径如何。还有其他人能看出问题在哪里吗?谢谢
var ordered = listOfItems.OrderBy(x => x.AssetID).ThenByDescending(x => x.LastModifiedDate);
List<Item> uniqueItems = new List<Item>();
foreach (Item result in ordered)
{
if (!uniqueItems.Any(x => x.AssetID.Equals(result.AssetID)))
{
uniqueItems.Add(result);
}
}
这是我现在拥有的,但它仍然允许重复。
LastModifiedDate
的确切值是多少?这个date
是否包含hour:mm:ss
? - spajce.Distinct
获取没有hour:mm:ss
的确切日期值。你能试试我的答案吗? - spajce