c# – List Intersect返回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并将其作为项目的补丁提出:)(我以为我们已经拥有它,但显然不是……)

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...