我有两个IEnumerable<FileInfo>
要比较的列表:
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
我想在 list2 中找到 list1 中不存在的所有内容。我尝试了以下方法:
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
但是,我真正想要的是获取 FileInfo 的列表,而不仅仅是 FileName 字符串。我需要这个,因为我需要其他信息,例如 FullFile 路径,ext.. 所以只是文件名字符串列表无法完成这项工作。我该怎么做呢?