var queryTyped =
from c in contacts.OfType<CustomerContact>()
orderby c.ContactID
select c;

var queryFiltered =
from c in contacts
where c is CustomerContact
orderby c.ContactID
select c;

Contact c1 = null;
Contact c2 = null;
foreach( var row in queryTyped.Take(1) ) {
	c1 = row;
}
foreach( var row in queryFiltered.Take(1) ) {
	c2 = row;
}
Contact c3 = new Contact();
c3.ContactID = c1.ContactID;
c3.ContactType = c1.ContactType;
c3.Name = c1.Name;
c3.Phone = c1.Phone;
Debug.Assert( c1 == c2 ); // stejn instance
Debug.Assert( c1 != c3 ); // odlin objekty
