我有两个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);并通过查询进行过滤。
发布于 2012-08-02 20:16:30
我怀疑FileInfo不会覆盖Equals/GetHashCode,所以即使两个不同的对象引用同一个文件,它们也是不相等的。三个选项:
如果您不需要这些列表作为FileInfo
IEqualityComparer<FileInfo>,那么DistinctBy相同的样式传递给IntersectIntersectBy,并建议将其作为项目的补丁:) (我以为我们已经有了,但显然还没有...)发布于 2012-08-02 20:15:23
两个列表中对FileInfo对象的引用将不同,因此Intersect将生成一个空列表。
您需要创建一个实现IEqualityComparer接口的类,并将该类的一个实例传递给Intersect,以获得预期的结果。
https://stackoverflow.com/questions/11777164
复制相似问题