我正在使用带有 mvc 的实体框架,在客户端我为此实现了一个 Select2,我创建了以下模型:
public class Select2
{
public int id { get; set; }
public string text { get; set; }
public Object[] data { get; set; }
}
id和text属性对于 select2 是必需的,我创建了data属性来保存我在查询中提取的所有数据,因为以前它只返回id和id和text属性中的名称,所以我想要添加一个对象数组来保存我的查询的所有其他列。
我使用这段代码:
[HttpGet]
public async Task<ActionResult> GetMesa(string q)
{
try
{
if (String.IsNullOrEmpty(q) || String.IsNullOrWhiteSpace(q))
{
return Json(new { respuesta="El filtro no puede ser nulo o un espacio en blanco /n" }, JsonRequestBehavior.AllowGet);
}
else
{
var items = await db.Mesa.Where(x => x.NombreMesa.ToLower().StartsWith(q.ToLower()))
.Select(x => new Select2()
{
id = x.MesaID,
text = x.NombreMesa,
data = new object[] { x.MesaID, x.NumeroMesa, x.NombreMesa, x.CapacidadMesa, x.AccionMesa, x.PisoMesa }
})
.ToListAsync();
return Json(new { respuesta = "OK", items = items },JsonRequestBehavior.AllowGet);
}
}
catch (Exception e)
{
return Json(new {respuesta = "MesasController => GetMesa \n" + e.Message + e.InnerException}, JsonRequestBehavior.AllowGet);
}
}
将值分配给items时出现以下错误:
无法将类型“System.Int32”转换为类型“System.Object”。LINQ to Entities 仅支持 EDM 基元或枚举类型的转换。
我该如何解决?还是我应该使用另一种方式?
构建 lambda 表达式树时,将尝试将值转换为对象数组,在验证时 ( ValidateAndAdjustCastTypes ) 检测到不允许这种类型的转换。
尝试传递一个匿名方法:
我留给您执行验证并引发异常的方法 ( ValidateAndAdjustCastTypes ) 的链接。
我已经复制了您的示例,它确实引发了类型异常
NotSupportedException
: