2017-06-19 66 views
-1

同樣大小返回的文件可以說我有5個文件從列表

  • F1:1MBS
  • F2:1MBS
  • F3:5MBs
  • F4:5MBs
  • F5: 7MBs

如何返回大小匹配的文件,以便新列表具有F1,2,3,4而不是F5?

要想從一個文件夾我想這些文件:

var files = Directory.EnumerateFiles(directoryPath, "*.*", SearchOption.AllDirectories) 
         .GroupBy(s1 => new FileInfo(s1).Length) 
         .SelectMany(grp => grp.Skip(1)); 
+3

什麼是*繞圈*您使用排除'F5'?你想刪除所有7MB文件嗎?具有*最大尺寸*的文件,其他內容? –

+0

您是否在查找至少有一個文件大小相同的文件? – Guy

+0

@Guy是的,我這樣做是爲了改進算法,刪除重複的文件,所以不是散列每個找到的文件,而是散列和比較大小匹配的文件 –

回答

3

一種方法是對本集團的數量增加Where

var files = Directory.EnumerateFiles(directoryPath, "*.*", SearchOption.AllDirectories) 
        .GroupBy(i=> new FileInfo(i).Length) 
        .Where(g=> g.Count() > 1) 
        .SelectMany(g => g);