C#FileInfo - 查找重复的文件

The*_*One 4 c# file fileinfo

我有一个FileInfo包含~200.000个文件条目的数组.我需要找到所有具有相同文件名的文件.我需要每个重复文件的目录名和文件名的结果,因为我想在之后重命名它们.

我已经尝试过了:

  • 比较每个条目与整个列表2对于"循环"//坏主意,这将需要几小时甚至几天^^
  • 尝试使用Linq排序//因为我没有使用Linq之前我有困难写出正确的声明,也许有人可以帮助我:)

Jon*_*eet 8

听起来应该这样做:

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)