Ich habe eine List
der Pfade von Dateien auf meinem Computer gespeichert. Mein Ziel ist es, zuerst die gleichnamigen Dateien herauszufiltern und dann diejenigen herauszufiltern, die die gleiche Größe haben.
Um dies zu tun, habe ich zwei Klassen implementiert IEqualityComparer<string>
und implementiert Equals
und GetHashCode
Methoden.IEqualityComparer funktioniert nicht wie vorgesehen
var query = FilesList.Distinct(new CustomTextComparer())
.Distinct(new CustomSizeComparer());
Der Code für beide der Klassen ist unten angegeben: -
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();
}
}
Aber der Code funktioniert nicht.
Es gibt keine Ausnahmen noch gibt es einen Compilerfehler, aber das Problem ist, dass der Code nicht funktioniert (schließt doppelte Dateien nicht aus).
Also, wie kann ich dieses Problem beheben? Kann ich etwas tun, damit der Code korrekt funktioniert?
Ihre Der Titel spiegelt nicht den Inhalt der Frage wider. Bitte lesen Sie [Wie schreibe ich einen guten Titel?] (Http: //meta.stackexchange.com/questions/10647/how-do-ich-schreibe-einen-guten titel) –