2 つのファイル ディレクトリがあり、両方が同一であることを確認したい。したがって、すべてのファイルを FileInfo 配列に配置するクエリを作成しました。すべてのファイルを FileName でグループ化し、グループごとに「LastWriteAccess」と「Length」の両方のファイルを比較したいと考えています。
しかし、正直なところ、私がこれを行うように、遅くはありません。グループ内のファイルの長さについてLinqを介して比較し、異なる場合は「sth」を実行させる方法はありますか?
...
FileInfo[] fiArrOri5 = d5ori.GetFiles("*.*", System.IO.SearchOption.TopDirectoryOnly);
FileInfo[] fiArrNew5 = d5new.GetFiles("*.*", System.IO.SearchOption.TopDirectoryOnly);
FileInfo[] AllResults = new FileInfo[fiArrNew5.Length+fiArrOri5.Length];
fiArrNew5.CopyTo(AllResults, 0);
fiArrOri5.CopyTo(AllResults, fiArrNew5.Length);
var duplicateGroups = AllResults.GroupBy(file => file.Name);
foreach (var group in duplicateGroups)
{
AnzahlElemente = group.Count();
if (AnzahlElemente == 2)
{
if (group.ElementAt(0).Length != group.ElementAt(1).Length)
{
// do sth
}
}
...
}
編集:
次のスニペットのみを実行すると、非常に高速に実行されます。(~00:00:00:0005156)
Console.WriteLine(group.ElementAt(0).LastWriteTime);
次のスニペットのみを実行すると、実行速度が非常に遅くなります。(~00:00:00:0750000)
Console.WriteLine(group.ElementAt(1).LastWriteTime);
理由はありますか?