首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列表Intersect返回null

列表Intersect返回null
EN

Stack Overflow用户
提问于 2012-08-02 20:12:00
回答 2查看 2K关注 0票数 6

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

代码语言:javascript
复制
List<FileInfo> outputList = new List<FileInfo>();
outputList = list1.Intersect(list2).ToList();

然而,我得到了一个空的列表。

这两个列表都包含通过以下方式找到的FileInfo

代码语言:javascript
复制
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(startFolder);
IEnumerable<System.IO.FileInfo> fileList = 
dir.GetFiles("*.*", System.IO.SearchOption.AllDirectories);

并通过查询进行过滤。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-02 20:16:30

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

如果您不需要这些列表作为FileInfo

  • Create an IEqualityComparer<FileInfo>,那么
  • 会将它们转换为路径,并将其以与MoreLINQ中的DistinctBy相同的样式传递给Intersect
  • Implement IntersectBy,并建议将其作为项目的补丁:) (我以为我们已经有了,但显然还没有...)
票数 6
EN

Stack Overflow用户

发布于 2012-08-02 20:15:23

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11777164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档