コピーする必要があるファイルのリストを取得するための必須の linq バージョンのコード:
var srcFiles = Directory.GetFiles(sourceDir).Select(f => Path.GetFileName(f));
var destFiles = Directory.GetFiles(destinationDir).Select(f => Path.GetFileName(f));
var filesToCopy = src.Except(dest);
1 つの注意点 (この回答とマイケルの両方) は、ネストされたディレクトリ構造がサポートされないことです。サブフォルダーもコピーされている場合、このコードは機能しません。
ネストされたサブディレクトリに使用されるコメントからのコードを含めるように編集します...
var srcFiles = Directory.GetFiles(sourceDir,"*.*", System.IO.SearchOption.AllDirectories).Select(f => Path.GetFullPath(f).SubString(sourceDir.Length));
var destFiles = Directory.GetFiles(sourceDir,"*.*", System.IO.SearchOption.AllDirectories).Select(f => Path.GetFullPath(f).SubString(sourceDir.Length));
var filesToCopy = src.Except(dest);
var fullPathOfFilesToCopy = src.Except(dest).Select(s => Path.Combine(sourceDir, s));