Linq Any-在此上下文中仅支持原始类型或枚举类型

时间:2018-07-27 19:00:56

标签: c# entity-framework linq

我遇到以下错误:

  

“ EntityFramework.SqlServer.dll中发生了'System.NotSupportedException'类型的未处理异常

     

其他信息:无法创建类型为“ Datos.Especialidad”的常量。在这种情况下,仅支持原始类型或枚举类型。“

尝试更正以下代码时:

IQueryable<Medico> listaMedicos = 
    from unMedico in context.Medico
    select unMedico;

if (medico.Especialidad.Count > 0)
{
    listaMedicos = FiltrarPor(listaMedicos, 
        x => x.Especialidad.Any(e => e.ID == (medico.Especialidad.FirstOrDefault().ID)));
}

return listaMedicos.ToList();

“ Medico”和“ Especialidad”之间的关系如下:

enter image description here

1 个答案:

答案 0 :(得分:0)

尝试:

if (medico.Especialidad.Count > 0)
{
    var medicoId = medico.Especialidad.FirstOrDefault().ID
    listaMedicos = FiltrarPor(listaMedicos, 
        x => x.Especialidad.Any(e => e.ID == medicoId));
}

实际上,更好的是:

var medicoEspecialidad = medico.Especialidad.FirstOrDefault();
if (medicoEspecialidad != null)
{
    var medicoId = medicoEspecialidad.ID
    listaMedicos = FiltrarPor(listaMedicos, x => x.Especialidad.Any(e => e.ID == medicoId));
}