Это потому, что предложение Where
возвращает IQueryable<Contact>
(набор контактов), а не один контакт (даже если в коллекции может быть только один элемент).
Два вариантана ум приходят либо все контактов:
foreach (var contact in repository.GetContacts.Where(p => p.ID == id).ToList())
{
repository.DeleteContact(contact);
}
, либо, если вы ожидаете только одного или ни одного, вы можете использовать SingleOrDefault
, чтобы получить один контакт:
var contact = repository.GetContacts.SingleOrDefault(p => p.ID == id);
// If it's not null, delete it
if (contact != null) repository.DeleteContact(contact);