2

我收到以下异常:LINQ to Entities 无法识别“Int64 ToInt64(System.String)”方法,并且该方法无法转换为存储表达式。

我有 long.Parse(ProjectID.ToString()) 并且我看到建议是使用 Convert.ToInt64 但我仍然遇到相同的异常

string projID = ProjectFileID.ToString();

            var d = (from f in context.FileInfo
                     where f.ID == Convert.ToInt64(projID)
                     select (f));
4

2 回答 2

13

只需在查询之外进行转换,因此您可以将结果直接与类型变量进行比较long

// TODO: Error handling
long projID = Convert.ToInt64(ProjectFileID.ToString());

var d = (from f in context.FileInfo
         where f.ID == projID
         select (f));

此外,鉴于您正在调用ToString()ProjectFileID您是否可以改为使用它,因为它看起来肯定是一个int或类似的东西。

于 2012-04-10T19:42:22.700 回答
0

原因是它试图在查询本身内部进行转换,而幕后 SQL 没有对该扩展的定义。解决方法是将查询转换为 long 外部(到临时变量)并将其传递给 LINQ。

于 2012-04-10T19:44:17.460 回答