| 

.NET C# Java Javascript Exception

2
Hallo Leute,

bei dem Versuch die Distinct-Methode mit einem eigenen EqualityComparer aufzurufen, bekomme ich folgende Fehlermeldung:
"Für den Abfrageoperator "Distinct" wurde eine nicht unterstützte Überladung verwendet."

So (verkürzt) sieht mein Code aus:
class myData 
{
public int Laenge;
public string Farbe;
}
class myDataComparer : EqualityComparer<myData>
{
public override bool Equals(myData data1, myData data2)
{
return (data1.Laenge.Equals(data2.Laenge)) && (data1.Farbe.Equals(data2.Farbe));
}
public override int GetHashCode(myData data)
{
return data.GetHashCode();
}
}
IQueryable<myData> result //ist eine Liste mit myData-Einträgen
//und bei diesem Aufruf kommt dann der Fehler:
result.Distinct(new myDataComparer()).ToList();


Was mache ich falsch?

Vielen Dank für Eure Hilfe.
Carst5en
16.07.2013
ille6 25 5
2 Antworten
1
Ich mach's kurz, weil ich es auch nur gegoogelt habe:

http://stackoverflow.com/questions/11117881/unsupported-overload-used-for-query-operator-distinct

(Die Ursache, wie ich sie verstanden habe, in Kürze: Du verwendest Linq2SQL oder Linq2EF. Dein Comparer kann nicht in die darunterliegende DB-Abfrage übersetzt werden. Mit ToList() machst Du erstmal eine normale .NET-Liste aus dem Ergebnis (Vorsicht Performance!) und filterst dann darin.)
16.07.2013
Matthias Hlawatsch 13,2k 4 9
0
Hallo Matthias,

vielen Dank für Deine hilfreiche Antwort.
So funktioniert es. :-)
Da die Liste nicht sehr groß ist (max. 200-300 Einträge), kann ich das Performanceproblem vernachlässigen.

Carsten
16.07.2013
ille6 25 5

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH