首页 > 解决方案 > System.IO.FileInfo.Equals() 未在 Where LINQ 扩展方法中返回预期结果

问题描述

当尝试从指定文件所在的同一目录返回所有其他文件时,返回的文件包括指定的文件。假设我的网络上的服务器共享中有三个文件:

当我尝试使用对象.Equals()上的方法过滤掉 file2 时FileInfo,该文件仍被包含在内。

FileInfo theFile = new FileInfo(@"\\Server\Share\Path\To\file2.ext");
List<FileInfo> allOtherFilesList = theFile.Directory.EnumerateFiles("*").Where(f => !f.Equals(vidFile)).ToList();

//Returned files:
\\Server\Share\Path\To\file1.ext
\\Server\Share\Path\To\file2.ext
\\Server\Share\Path\To\file3.ext

如果我.Equals()在属性上使用该方法FileInfo.FullName,我会返回一个文件列表,如我所料

FileInfo theFile = new FileInfo(@"\\Server\Share\Path\To\file2.ext");
List<FileInfo> allOtherFilesList = theFile.Directory.EnumerateFiles("*").Where(f => !f.FullName.Equals(vidFile.FullName)).ToList();

//Returned files:
\\Server\Share\Path\To\file1.ext
\\Server\Share\Path\To\file3.ext

.Equals()当然,我不理解该方法的某些方面?我会认为FileInfo代表同一个文件的两个对象是相同的。

标签: c#.netsystem.io.fileinfo

解决方案


推荐阅读