当前位置: 首页 > 面试题库 >

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

蒋高杰
2023-03-14
问题内容

我正在将一些东西从一台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 Entities无法识别方法’System.String ToString()’,并且该方法无法转换为商店表达式。

有人知道为什么会这样吗?


问题答案:

只需将字符串保存到临时变量中,然后在表达式中使用它:

var strItem = item.Key.ToString();

IQueryable<entity> pages = from p in context.pages
                           where  p.Serial == strItem
                           select p;

出现问题是因为ToString()未真正执行,而是将其转换为MethodGroup,然后将其解析并转换为SQL。由于没有ToString()等效项,因此表达式失败。

确保您还检查了有关以后添加的帮助程序类的Alex的答案SqlFunctions。在许多情况下,它可以消除对临时变量的需要。



 类似资料:
  • 问题内容: 我有包含我的上下文的课程。但是,当我编译时,在这一行中出现了另一个类: 类: 错误: AndroidManifest.xml: 问题答案: 您需要在清单中指定以使用自定义应用程序。 这是完整的

  • 问题内容: 我正在使用石英进行日程安排。 它接受5个参数。(秒,分钟,小时,daysOfMonth,月份)。 当我通过第四个参数作为“ 09”。Eclipse给我错误“ int类型的文字八进制09(数字9)超出范围”。 但是,当我将第四个参数作为“ 9”而不是“ 09”传递时,它起作用了。 谁能解释这个错误? 问题答案: 在Java中,如果要定义整数,则前导“ 0”将表示您正在以八进制定义数字

  • 当我试图用ajax向spring controller中的一个方法发送一个列表时,我得到了以下错误: 不支持内容类型'application/x-www-form-urlencoded' 我的AJAX代码: 我的方法: 我的按钮: 编辑 发现Spring不能将application/x-www-form-urlencoded理解为RequestBody,所以我删除了它,并在方法上添加了@respo

  • 如何正确拆分字符串,使Words[1]实际上是?谢谢你的帮助!

  • 我有一个thymeleaf表单和Spring引导后端。我有一个model类,它的getters和setters名称有点不同。因此,当我要取那个模型并将它的字段作为表单输入字段时,Tymeleaf不能将它们识别为字段。 窗体适用于区域字段。但对Amt字段不起作用。如果我将isAmt()get方法更改为getIsAmt(),也许我可以修复这个问题。但是我不能更改模态类的任何方法名,因为这个类已经编译好

  • 问题指出: 创建一个具有长度和宽度双属性的矩形类。默认构造函数应该将这些属性设置为1。提供计算矩形周长和面积的方法,以及两个数据字段的访问器和赋值器。length和width的mutator方法应该验证传入的数字是否大于0.0且小于20.0——如果不符合这些标准,就不应该更改字段的值。 在同一文件中编写一个驱动程序类来测试您的矩形类。它应该提示用户输入矩形的长度和宽度,然后打印出矩形的面积和周长。