Ich versuche IEquatable zu implementieren, damit ich .Exception in meinen benutzerdefinierten Typ LINQ-Abfragen verwenden konnte.Equals, GetHashCode und Operatoren Override nicht in IEquatable-Implementierung
Der benutzerdefinierte Typ Code sieht wie folgt aus:
public class Case : IEquatable<Case>
{
[Key]
public int Id { get; set; }
//More properties
[...]
public bool Equals(Case other)
{
// Check whether the compared object references the same data.
if (ReferenceEquals(this, other)) return true;
// Check whether the compared object is null.
if (ReferenceEquals(other, null)) return false;
// Check whether the objects’ properties are equal.
return Id.Equals(other.Id);
}
public override bool Equals(object obj)
{
var other = obj as Case;
// Check whether the compared object references the same data.
if (ReferenceEquals(this, other)) return true;
// Check whether the compared object is null.
if (ReferenceEquals(other, null)) return false;
// Check whether the objects’ properties are equal.
return Id.Equals(other.Id);
}
public override int GetHashCode()
{
return Id.GetHashCode();
}
public static bool operator ==(Case case1, Case case2)
{
if ((object)case1 == null || (object)case2 == null)
return Equals(case1, case2);
return case1.Equals(case2);
}
public static bool operator !=(Case case1, Case case2)
{
if ((object)case1 == null || (object)case2 == null)
return !Equals(case1, case2);
return !case1.Equals(case2);
}
}
I throw new NotImplementedException();
in der Equals-Methode hinzugefügt haben, aber es wird nie aufgerufen. https://msdn.microsoft.com/en-us/library/ms131190.aspx
aber keinen Erfolg:
Ich habe die Konventionen, die hier gezeigt gefolgt.
EDIT
Hier ist der Code, der für die Außer-Methode aufruft:
if (Checkset(set))
{
var subset = GetPowerSet(set);
var newset = powerset.Except(subset);
}
Wo beide powerset
und subset
Array von Case
.
Können Sie die Linq-Code hinzufügen, wo erwartet wird, Equals anrufen? –
Hat Ihr Testfall zwei 'Fälle' mit derselben 'ID'? – PetSerAl
@RubenAguilar hat den Code hinzugefügt! – RainierMallol