У меня есть List
путей файлов, хранящихся на моем компьютере. Моя цель - сначала отфильтровать файлы с таким же именем и затем отфильтровать те, которые имеют одинаковый размер.
Для этого я создал два класса, реализующих IEqualityComparer<string>
, и реализовал методы Equals
и GetHashCode
.
var query = FilesList.Distinct(new CustomTextComparer())
.Distinct(new CustomSizeComparer());
Код для обоих классов приведен ниже: -
public class CustomTextComparer : IEqualityComparer<string>
{
public bool Equals(string x, string y)
{
if (Path.GetFileName(x) == Path.GetFileName(y))
{
return true;
}
return false;
}
public int GetHashCode(string obj)
{
return obj.GetHashCode();
}
}
public class CustomSizeComparer : IEqualityComparer<string>
{
public bool Equals(string x, string y)
{
if (new FileInfo(x).Length == new FileInfo(y).Length)
{
return true;
}
else
{
return false;
}
}
public int GetHashCode(string obj)
{
return obj.GetHashCode();
}
}
Но код не работает.
Он не бросает никаких исключений и не имеет ошибки компилятора, но проблема в том, что код не работает (не исключает дублирование файлов).
Итак, как я могу исправить эту проблему? Я могу что-то сделать, чтобы код работал правильно.