Hi,
You can change the behaviour of Contains by overriding the object's Equals method - however this change my affect other uses of .Equals as its a base object method. You would also need to give the Contains method a new instance of your class, so you would need to wrap your 'Honda' in a new Car object anyway...
My advice would be to create your own class that derives from List<Car> (call it CarList or something) and add an overloaded method for Contains to take a string parameter - obviously your custom list will be a list of only Car objects as it would need to know what property to check against.
You could get really clever and implement a custom collection yourself similar to List<T> that can take an object value and a property name parameter and you use reflection to perform the Contains.
I tend to make custom lists anyway, one for self-documenting code, and two just in case I need to embed custom behaviour in future. I either inherit from List<> or BindingList<> depending on if its data bound or not.
Adam