【发布时间】:2014-01-28 18:20:30
【问题描述】:
我有一个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();
}
}
但是代码不起作用。
它没有抛出任何异常,也没有任何编译器错误,但问题是代码不起作用(不排除重复文件)。
那么,我该如何解决这个问题呢?我可以做些什么来使代码正常工作。
【问题讨论】:
-
您的标题不反映问题的内容。请阅读How do I write a good title?
标签: c# .net linq iequalitycomparer