转换.Int64无法识别LINQ到实体

时间:2012-04-10 19:39:01

标签: c# linq linq-to-entities

我收到以下异常: 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));

2 个答案:

答案 0 :(得分: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或类似的东西。< / p>

答案 1 :(得分:0)

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