Entity Framework пытается преобразовать context.Accounts.Contains (student) в оператор SQL (например, «WHERE ... IN (...)»). Он не может перевести его в оператор SQL, потому что знает только, как обрабатывать примитивные типы (int, string ...), следовательно, исключение.
Возможно, вы пытаетесь заставить EF сгенерировать оператор SQL, например:
ВЫБРАТЬ * ИЗ СЧЕТОВ, ГДЕ Id IN (1, 2, 3, 4, 5)
Вы можете написать такой оператор LINQ To Entities следующим образом:
var studentIds = new int[] { 1, 2, 3, 4, 5 };
var matches = from account in context.Accounts
where studentIds.Contains(account.Id)
select account;
Для получения дополнительной информации посмотрите следующее сообщение в блоге:
http://blogs.msdn.com/b/alexj/archive/2009/03/26/tip-8-writing-where-in-style-queries-using-linq-to-entities.aspx
В блоге, о котором я упоминал, предлагается обходной путь для платформы .NET 3.5.