linq给实体抛出一些错误

时间:2014-04-29 09:35:18

标签: c# linq asp.net-mvc-4

我正在使用这个控制器

public ActionResult gridview() 
        {


  var jsonData = new {
    total = 1, //todo: calculate
    page = 1,
    records = db.TestModels.Count(),
    rows = (
      from question in db.TestModels
      select new {
        id = question.Dataid,
        cell = new string[] { 
          question.Dataid, question.Name, question.Emailid 
        }
      }).ToArray()
  };
  return Json(jsonData, JsonRequestBehavior.AllowGet);
}
    }

我收到此错误

LINQ to Entities无法识别方法' System.String ToString()'方法,并且此方法无法转换为商店表达式。 可以任何身体帮助

1 个答案:

答案 0 :(得分:0)

您正在尝试在SQL查询中使用new string[],但无法将其转换为SQL。您需要从模型中获取所需的数据,并在内存中执行转换。使用.AsEnumerable()表示您要在内存中执行以下操作,而不是在SQL语句中。

这样的事情:

var jsonData = new {
    total = 1, //todo: calculate
    page = 1,
    records = db.TestModels.Count(),
    rows = db.TestModels
        .Select(x => new { x.Dataid, x.Name, x.Emailid })
        .AsEnumerable()
        .Select(x => new {
            id = x.DataId,
            cell = new string[3] { x.Dataid, x.Name, x.Emailid } 
        })
        .ToArray();
};