I have two List<FileInfo> and I want to return the common FileItem between them.
List<FileInfo> outputList = new List<FileInfo>();
outputList = list1.Intersect(list2).ToList();
However, I’m getting back an empty List.
Both the lists contain FileInfo‘s found by
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(startFolder);
IEnumerable<System.IO.FileInfo> fileList =
dir.GetFiles("*.*", System.IO.SearchOption.AllDirectories);
And filtered by queries.
I suspect that
FileInfodoesn’t overrideEquals/GetHashCode, so two distinct objects will be unequal even if they refer to the same file. Three options:FileInfoIEqualityComparer<FileInfo>and pass that toIntersectIntersectByin the same style asDistinctByin MoreLINQ and propose it as a patch to the project 🙂 (I thought we already had it, but apparently not…)