C# System.IO.FileInfo.Equals()未在Where LINQ扩展方法中返回预期结果

C# System.IO.FileInfo.Equals()未在Where LINQ扩展方法中返回预期结果,c#,.net,system.io.fileinfo,C#,.net,System.io.fileinfo,当尝试从指定文件所在的同一目录返回所有其他文件时,返回的文件包括指定文件。假设我的网络上的服务器共享中有三个文件: \\Server\Share\Path\To\file1.ext \\Server\Share\Path\To\file2.ext \\Server\Share\Path\To\file3.ext 当我尝试使用FileInfo对象上的.Equals()方法筛选出file2时,该文件仍被包括在内 FileInfo theFile = new FileInfo(@"\\Server

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

  • \\Server\Share\Path\To\file1.ext
  • \\Server\Share\Path\To\file2.ext
  • \\Server\Share\Path\To\file3.ext
当我尝试使用
FileInfo
对象上的
.Equals()
方法筛选出file2时,该文件仍被包括在内

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
对象是相同的。

您是否有时间检查
FileInfo
是否有
Equals
方法?@AlexeiLevenkov-
.Equals()
方法是所有.NET对象继承自的
对象类型的基本方法。@cfʀᴎᴅᴏƞвєнᴎ这并不意味着类重写
等于
。我认为基本版本只是引用了equals。正如@Zer0所提到的,FileInfo不会覆盖
equals
。结果是正确的,这是两个不同的对象,只是指向同一个文件。
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