我有两个List<FileInfo>
,我希望在它们之间返回公共FileItem
。
List<FileInfo> outputList = new List<FileInfo>();
outputList = list1.Intersect(list2).ToList();
但是,我要回到一个空的列表。
这两个列表都包含
找到的FileInfo
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(startFolder);
IEnumerable<System.IO.FileInfo> fileList =
dir.GetFiles("*.*", System.IO.SearchOption.AllDirectories);
按查询过滤。
答案 0 :(得分:6)
我怀疑FileInfo
没有覆盖Equals
/ GetHashCode
,因此即使两个不同的对象引用同一个文件,它们也是不相等的。三个选项:
FileInfo
IEqualityComparer<FileInfo>
并将其传递给Intersect
IntersectBy
相同的方式实施DistinctBy
并将其作为项目的补丁提出:)(我以为我们已经拥有它,但显然不是...... )答案 1 :(得分:3)
引用到两个列表中的FileInfo
个对象会有所不同,因此Intersect
会生成一个空列表。
您需要创建一个实现IEqualityComparer<FileInfo>
接口的类,并将此类的实例传递给Intersect
,以获得您期望的结果。