Howto override ListT Enthält

7

Ich möchte eine Eigenschaft anstelle des gesamten Objekts mithilfe einer Liste [MyObject] vergleichen. Ich verwende daher IEquatable [MyObject], aber der Compiler möchte weiterhin MyObject anstelle der String-Eigenschaft. Warum?

Folgendes habe ich:

%Vor%     
UNeverNo 03.12.2012, 14:34
quelle

4 Antworten

19

Vielleicht möchten Sie Folgendes ausprobieren:

%Vor%

von MSDN: Ссылка

  

Bestimmt, ob ein Element einer Sequenz eine Bedingung erfüllt.

Das x => x.someProperty == someValue wird lambda expression genannt, falls Sie es nicht wussten.

Beachten Sie, dass Sie dies für alles verwenden können, das IEnumerable implementiert, damit Sie nicht auf List<T> beschränkt sind.

    
Pacane 03.12.2012, 14:39
quelle
4

klingt so, als sollten Sie eine Where anstatt einer Contains

machen %Vor%

Der Grund dafür, dass ac.MyProperty.Contains("Name1") explodiert, ist, weil MyProperty ein List<AnyOtherClass> und nicht string

ist     
hunter 03.12.2012 14:35
quelle
2

Es sollte IEquatable<AnyOtherClass> nicht <string> sein. Sie vergleichen Instanzen von AnyOtherClass nicht Instanzen von String , obwohl Ihr Vergleich Strings innerhalb Ihrer Klasse tatsächlich vergleicht.

Aber es sieht eher so aus, als ob Sie versuchen, eine Art Wörterbuch zu erstellen. In diesem Fall sollten Sie die Wörterbuchklassen verwenden.

    
Matt Burland 03.12.2012 14:40
quelle
2

Dies ist nicht die beabsichtigte Verwendung von IEquatable & lt; T & gt ;. Sehen Sie sich die Dokumentation Ссылка an:

Hinweise zu Implementierern Ersetzen Sie den Typparameter des IEquatable & lt; T & gt; Schnittstelle mit dem Typ, der diese Schnittstelle implementiert.

Abgesehen davon, dass Sie nicht so funktionieren sollten, warum sollten Sie eine Implementierung von equals in einer Klasse erzwingen, weil eine andere Klasse eine spezielle Anforderung zum Nachschlagen von Instanzen hat? Überlassen Sie es der Klasse mit der Sammlung, die schlüsselbasierte Suche wie in anderen Antworten beschrieben durchzuführen.

    
fsimonazzi 03.12.2012 14:52
quelle

Tags und Links