无法创建类型'?'的常量值。在此上下文中仅支持基元类型或枚举类型

时间:2015-11-17 15:24:08

标签: c# asp.net-mvc

在下面的代码中我得到了一个异常

var ret = db.Especialidades.Except(sol.EspecialidadesExigidas).ToList();

这是例外

Unable to create a constant value of type 'TCC.Models.Especialidade'. 
Only primitive types or enumeration types are supported in this context.

我已经研究过其他类似的问题并试图调整他们的答案,但没有成功。 其他尝试:

var ret = (from e in db.Especialidades where !sol.EspecialidadesExigidas.Any(e2 => e2.Id == e.Id) select e).ToList(); 
var ret = (from e in db.Especialidades where !sol.EspecialidadesExigidas.Select(e2 => e2.Id).Contains(e.Id) select e).ToList();

我要做的是从列表中未包含的数据库中获取所有“Especialidades”

1 个答案:

答案 0 :(得分:5)

如果使用id列表,那么Linq提供程序将知道如何将其转换为SQL。

var ids = sol.EspecialidadesExigidas.Select(e => e.Id).ToList();
var ret = db.Especialidades.Where(e => !ids.Contains(e.Id));