2

Error Description:LINQ to Entities 无法识别方法“System.String ToString()”方法,并且该方法无法转换为存储表达式。

执行以下代码时出现错误:

public ActionResult NewBooking()
    {
        var db = new VirtualTicketsDBEntities2();

        IEnumerable<SelectListItem> items = db.Attractions
          .Select(c => new SelectListItem
          {
              Value = c.A_ID.ToString(),
              Text = c.Name
          });
        ViewBag.CategoryID = items;
        return View();
    }

有什么建议可以摆脱这个错误吗?

谢谢。

4

2 回答 2

9

您可以使用 anAsEnumerable()将绑定上下文从 Linq-to-Entities 更改为 Linq-to-Objects:

IEnumerable<SelectListItem> items = db.Attractions
    .AsEnumerable()
    .Select(c => new SelectListItem
    {
        Value = c.A_ID.ToString(),
        Text = c.Name
    });
于 2013-07-15T17:48:17.577 回答
4

如果要在数据库上进行转换,则需要使用SqlFunction

public ActionResult NewBooking()
{
    var db = new VirtualTicketsDBEntities2();

    IEnumerable<SelectListItem> items = db.Attractions
      .Select(c => new SelectListItem
      {
          Value = SqlFunctions.StringConvert((double)c.A_ID)
          Text = c.Name
      });
    ViewBag.CategoryID = items;
    return View();
}

问题是SqlFunctions不是标准的,可能不适用于所有数据库提供程序。如果这是一个问题,请使用AsEnumerable离开实体框架的可查询世界:

public ActionResult NewBooking()
{
    var db = new VirtualTicketsDBEntities2();

    IEnumerable<SelectListItem> items = db.Attractions.AsEnumerable()
      .Select(c => new SelectListItem
      {
          Value = c.A_ID.ToString()
          Text = c.Name
      });
    ViewBag.CategoryID = items;
    return View();
}
于 2013-07-15T17:52:25.930 回答