繁体   English   中英

List Intersect返回null

[英]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
  • MoreLINQ中以与DistinctBy相同的样式实现IntersectBy ,并将其作为项目的补丁提出:)(我以为我们已经拥有它,但显然不是......)

两个列表中对FileInfo对象的引用将有所不同,因此Intersect将生成一个空列表。

您需要创建一个实现IEqualityComparer<FileInfo>接口的类,并将此类的实例传递给Intersect ,以获得您期望的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM