为了账号安全,请及时绑定邮箱和手机立即绑定

Linq到实体不识别方法‘System.String ToString()’方法,而且该方法无法转换

Linq到实体不识别方法‘System.String ToString()’方法,而且该方法无法转换

蓝山帝景 2019-07-11 10:19:23
Linq到实体不识别方法‘System.String ToString()’方法,而且该方法无法转换为存储表达式我正在将一些东西从一个MySQL服务器迁移到一个SQL服务器,但我不知道如何使这些代码工作:using (var context = new Context()){     ...     foreach (var item in collection)     {         IQueryable<entity> pages = from p in context.pages                                            where  p.Serial == item.Key.ToString()                                    select p;         foreach (var page in pages)         {             DataManager.AddPageToDocument(page, item.Value);         }     }     Console.WriteLine("Done!");     Console.Read();}当它进入第二个foreach (var page in pages)它抛出了一个例外,它说:Linq to Entites不识别‘System.StringToString()’方法,而且该方法不能转换为存储表达式。有人知道为什么会这样吗?
查看完整描述

3 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

问题是,您正在LINQtoEntients查询中调用ToString。这意味着解析器正在尝试将ToString调用转换为其等效的SQL(这是不可能的.因此出现了异常)。

您所要做的就是将ToString调用移动到一个单独的行:

var keyString = item.Key.ToString();var pages = from p in context.entities            
where p.Serial == keyString            
select p;


查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 738 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信