[英]List Intersect returning null
我有两个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);
并通过查询过滤。
我怀疑FileInfo
不会覆盖Equals
/ GetHashCode
,因此即使它们引用同一个文件,两个不同的对象也是不相等的。 三种选择:
FileInfo
则将列表转换为路径 IEqualityComparer<FileInfo>
并将其传递给Intersect
DistinctBy
相同的样式实现IntersectBy
,并将其作为项目的补丁提出:)(我以为我们已经拥有它,但显然不是......) 两个列表中对FileInfo
对象的引用将有所不同,因此Intersect
将生成一个空列表。
您需要创建一个实现IEqualityComparer<FileInfo>
接口的类,并将此类的实例传递给Intersect
,以获得您期望的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.