System.IO.FileInfo.Equals () не возвращает ожидаемый результат в методе расширения Where LINQ - PullRequest
0 голосов
/ 09 марта 2020

При попытке вернуть все другие файлы из того же каталога, в котором находится указанный файл, возвращаемые файлы включают указанный файл. Предположим, у меня есть три файла на общем сервере в моей сети:

  • \\Server\Share\Path\To\file1.ext
  • \\Server\Share\Path\To\file2.ext
  • \\Server\Share\Path\To\file3.ext

Когда я пытаюсь отфильтровать файл2 с помощью метода .Equals() для объекта 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 объекта, представляющих один и тот же файл, будут одинаковыми.

...