首页 > 代码库 > LINQ to Entities 不识别方法“System.String ToString() 的解决方法

LINQ to Entities 不识别方法“System.String ToString() 的解决方法

今天在做一个页面的时候出现了LINQ to Entities 不识别方法“System.String ToString()”的错误,对于源码IQueryable<SelectListItem> items = roleInfoServer.Get(r => true).Select(r => new SelectListItem() { Value = http://www.mamicode.com/r.Id.ToString(), Text = r.RoleName });找了好长的时间没有找到原因。无奈之下只好求助度娘了,找了半天别人遇到的时候是在linq的where语句中出现的。解决的办法是采用变量的方法。如http://blog.csdn.net/qqxyy99/article/details/52144902中写的方法,但是这些不适合我。

看了几个博客,但遇到这个问题的基本上是和Iqueryable这个接口有关。于是想起了MSDN上说的

IQueryable 接口由查询提供程序实现。该接口只能由同时实现 IQueryable<T> 的提供程序实现。如果该提供程序不实现 IQueryable<T>,则无法对提供程序数据源使用标准查询运算符。

而我所有的关于查询的全部使用IQueryable,数据都保存在数据库,没有实现。

于是,我把IQueryable换成了IEnumerable,代码变成了这样:  IEnumerable<SelectListItem> items = roleInfoServer.Get(r => true).AsEnumerable().Select(r => new SelectListItem() { Value = http://www.mamicode.com/r.Id.ToString(), Text = r.RoleName });

 

问题解决

 

LINQ to Entities 不识别方法“System.String ToString() 的解决方法