LINQ to Entities无法识别方法'System.String ToString(Int32)'方法,并且此方法无法转换为商店表达式。“}

时间:2014-12-16 07:44:49

标签: c# asp.net-mvc linq

我在控制器中使用以下代码

BlueBusDB_Context db = new BlueBusDB_Context();
List<SelectListItem> li =new List<SelectListItem>();

li = db.M_BLUEBUS_STATES.Select(s => new SelectListItem {Text = s.STATE_NAME, Value = Convert.ToString(s.STATE_CODE)}).ToList();

ViewBag.State = li;
return View();

然后在我的创建视图中我想绑定下拉列表,我正在使用下面的文件

@Html.DropDownList("State",ViewBag.State as List<SelectListItem>)

我收到了上述错误..

2 个答案:

答案 0 :(得分:2)

Linq to Entities不支持Convert(请参阅supported funuctions

我首先创建一个匿名类型然后转换为SelectListItems以更好地分离关注点:

li = db.M_BLUEBUS_STATES
       .Select(s => new { s.STATE_NAME, s.STATE_CODE })
       .AsEnumerable()
       .Select(x => new SelectListItem { Text = x.STATE_NAME, Value = x.STATE_CODE.ToString()})
       .ToList();

答案 1 :(得分:1)

您需要使用常规ToString方法,而不是Convert类中的方法:

li = db.M_BLUEBUS_STATES.Select(s => new SelectListItem {
     Text = s.STATE_NAME, 
     Value = s.STATE_CODE.ToString()
}).ToList();