У меня есть следующий запрос в LINQ to SQL для извлечения всех записей из таблицы, которых еще нет в объединяемой таблице.
// <param name="id">The ID of the Person</param>
IEnumberable<object> GetUnassignedClients(int id)
{
_db.Clients
.Select(i => new
{
Client_id = i.Id,
Person_id = id,
Cid = id + "." + i.Id // Please don't ask why I do this. I just have to do it
// ... some more fields
})
.Where(o =>
!_db.Clients_Persons
.Where(t => t.Person_id == id)
.Select(t => t.Client_id)
.Contains(o.Client_id))
.Distinct().ToList();
}
Теперь я приступил к переходу на EF4, но часть "Cid"анонимного типа с комбинацией ToList()
(ToList () вызвал исключение - это упрощенный тестовый случай без условия WHERE) завершается ошибкой с исключением:
Невозможно создать постоянное значение типа 'System.Object.В этом контексте поддерживаются только примитивные типы (такие как Int32, String и Guid).
Почему это так или я что-то здесь упускаю?