List Intersect返回null

Eml*_*nie 6 c# linq list fileinfo intersect

我有两个List<FileInfo>,我想返回FileItem它们之间的共同点.

List<FileInfo> outputList = new List<FileInfo>();
outputList = list1.Intersect(list2).ToList();
Run Code Online (Sandbox Code Playgroud)

但是,我要回到一个空列表.

这两个列表都包含FileInfo

System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(startFolder);
IEnumerable<System.IO.FileInfo> fileList = 
dir.GetFiles("*.*", System.IO.SearchOption.AllDirectories);
Run Code Online (Sandbox Code Playgroud)

并通过查询过滤.

Jon*_*eet 6

我怀疑FileInfo它不会覆盖Equals/ GetHashCode,所以即使它们引用同一个文件,两个不同的对象也是不相等的.三种选择:

  • 如果您不需要它们,请将列表转换为路径 FileInfo
  • 创建一个IEqualityComparer<FileInfo>并将其传递给Intersect
  • 实现IntersectBy在同一风格DistinctByMoreLINQ并提出它作为一个补丁,该项目:)(我认为我们已经有了它,但显然不是...)