If I have an object of type MyBull and a List:
// Just an example
MyBull x = getMeTheObjectWithIdFromDB(9);
ori
This is because the MyBull instances are being compared by reference. From the point of view from .NET, x and y are both different instances and therefore not Equal.
In order to get around this you will have to override the Equals and GetHashCode methods (which means you should probably implement IEquatable