我有一个List
存储在我的电脑上的文件路径。我的目标是首先筛选出具有相同名称的文件,然后筛选出具有相同大小的文件。
为此,我做了两类实施IEqualityComparer<string>
,并实施了Equals
和GetHashCode
的方法。IEqualityComparer不按预期工作
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();
}
}
但代码不能正常工作。
它不会抛出任何异常,也没有任何编译器错误,但问题是代码不起作用(不排除重复的文件)。
那么,我该如何纠正这个问题呢?有什么我可以做的,使代码正常工作。
你标题并不反映问题的内容。请阅读[我如何写一个好的标题?](http://meta.stackexchange。com/questions/10647/how-do-i-write-a-good-title) –