【问题标题】:Convert.Int64 Is Not Reconized LINQ To EntitiesConvert.Int64 无法识别 LINQ To 实体
【发布时间】:2012-04-10 19:39:01
【问题描述】:

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

【问题讨论】:

标签: c# linq linq-to-entities


【解决方案1】:

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

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

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

另外,鉴于您在ProjectFileID 上调用ToString(),您是否可以直接转换它,因为它看起来肯定是int 或类似的东西。

【讨论】:

  • 不要调用 Convert,而是将其转换为 int,如 (int)id。为我工作。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 2017-04-10
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    相关资源
    最近更新 更多