Originariamente inviato da twing
il mio oggetto inserito nella lista ha diverse proprietà, tra cui delle date, ed è per questo che Contains non funziona
questi meccanismi interni del linguaggio non li ho ancora studiati. Io sono rimasto a concetti più semplici tipo come si implementano le interfacce 
Un interfaccia è una serie di metodi e proprietà che descrivono (soltanto) una funzionalità. somigliano alle classi ma sono dichiarate con la parola chiave interface ed internamente elencano solo firme di metodi e proprietà ma sono prive di implementazione. Implementarla, per una classe, significa dichiarare di impegnarsi a riscrivere un implementazione per quei metodi e proprietà in modo che la classe possa avvalersi di quella funzionalità.
L'argomento è cosi vasto ma questo per il post credo sia sufficiente.
se leggi la documentazione che ti ha linkato alka vedrai che l'interfaccia in questione ha un solo metodo, per implementarla, quindi, si fa cosi:
codice:
public MiaClasse : IEquatable<MiaClasse> //step1: dichiaro che la mia classe implementa l'interfaccia IEquatable<T>
{
//il resto della classe
//step 2 definisco ciascuno dei i metodi e proprietà (in questo caso solo un metodo) che definiscono l'interfaccia.
public bool Equals(MiaClasse other)
{
//verifico se questa istanza della classe è "uguale" all'istanza other.
}
}
Visual Studio rende il lavoro di implementazione leggermente più comodo, infatti dopo aver dichiarato di voler implementare un interfaccia (step 1) basta cliccare sullo smart tag (il rettangolino rosso che appare sul nome dell'interfaccia) e cliccare su "implementa interfaccia".