我有一个FileInfo包含~200.000个文件条目的数组.我需要找到所有具有相同文件名的文件.我需要每个重复文件的目录名和文件名的结果,因为我想在之后重命名它们.
我已经尝试过了:
听起来应该这样做:
var duplicateNames = files.GroupBy(file => file.Name)
.Where(group => group.Count() > 1)
.Select(group => group.Key);
Run Code Online (Sandbox Code Playgroud)
现在将是一个非常学习LINQ的好时机.它非常有用 - 花在学习它上面的时间(即使只是LINQ to Objects)也会很快收回成本.
编辑:好的,如果你想要FileInfo每个组的原件,只需删除选择:
var duplicateGroups = files.GroupBy(file => file.Name)
.Where(group => group.Count() > 1);
// Replace with what you want to do
foreach (var group in duplicateGroups)
{
Console.WriteLine("Files with name {0}", group.Key);
foreach (var file in group)
{
Console.WriteLine(" {0}", file.FullName);
}
}
Run Code Online (Sandbox Code Playgroud)