IEnumerable<FileInfo>
比較したい2 つのリストがあります。
IEnumerable<FileInfo> list1 = dir1.GetFiles("*" + _ext1, SearchOption.AllDirectories);
IEnumerable<FileInfo> list2 = dir2.GetFiles("*" + _ext2, SearchOption.AllDirectories);
_ext1 と _ext2 は異なるファイル拡張子タイプです。例えば:
string _ext1 = ".jpg";
string _ext2 = ".png";
したがってlist1
、次のようになります。
file1.jpg
file2.jpg
file3.jpg
file4.jpg
file5.jpg
file6.jpg
次のようにlist2
なります。
file1.png
file2.png
file4.png
list1 に存在しない list2 のすべてを検索したい。私は次のことを試しました:
List<string> list1FileNames = list1.Select(f => Path.GetFileNameWithoutExtension(f.FullName)).ToList();
List<string> list2FileNames = list2.Select(f => Path.GetFileNameWithoutExtension(f.FullName)).ToList();
var setDiff = list1FileNames .Except(list2FileNames );
これは素晴らしく、正常に動作し、戻ります (ファイル拡張子がないことに注意してください):
file3
file5
file6
しかし、私が本当に望んでいるのは、FileName 文字列だけでなく、FileInfo のリストを取得することです。FullFile パス、ext.. などの他の情報が必要なため、これが必要です。そのため、ファイル名文字列のリストだけでは機能しません。どうすればこれを行うことができますか?