Я думаю, что вы, вероятно, могли бы использовать метод Except, но вам нужно было бы предоставить для сравнения метод равенства, чтобы знать, когда два элемента равны.
http://msdn.microsoft.com/en-us/library/bb336390.aspx
В вашем вопросе похоже, что вы не используете свой собственный компаратор, поэтому он сравнивает элементы, чтобы определить, являются ли они одним и тем же объектом в памяти (скорее всего), то есть не что вы пытаемся сделать.
Вы хотите сравнить объекты по идентификатору базы данных, а это значит, что вам нужно предоставить свой собственный компаратор.
Пример:
public class Item
{
public int Id { get; set; }
}
class ItemComparer : IEqualityComparer<Item>
{
public bool Equals(Item x, Item y)
{
if (Object.ReferenceEquals(x, y)) return true;
if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
return false;
return x.Id == y.Id;
}
public int GetHashCode(Item value)
{
if (Object.ReferenceEquals(value, null)) return 0;
int hash = value.Id.GetHashCode();
return hash;
}
}