为啥不能使用 SqlFunctions 在 LinQ 中将 int 转换为字符串?

Posted

技术标签:

【中文标题】为啥不能使用 SqlFunctions 在 LinQ 中将 int 转换为字符串?【英文标题】:Why can't cast int to string in LinQ using SqlFunctions?为什么不能使用 SqlFunctions 在 LinQ 中将 int 转换为字符串? 【发布时间】:2013-12-04 09:49:42 【问题描述】:

为什么Linq 不起作用?

Groups.Where(x => SqlFunctions.StringConvert((double?)x.Code)
                              .Trim().StartsWith(txtSearch.Text))
      .ToList(); 

错误

The specified method 'System.String StringConvert(System.Nullable`1[System.Double])' on the type 'System.Data.Entity.SqlServer.SqlFunctions' cannot be translated into a LINQ to Entities store expression.

我正在使用 EF6/SQL CE/C#

代码是一个 int 字段

【问题讨论】:

你能说得更具体点吗?什么是异常/错误? 你得到的错误异常/编译器错误是什么? 什么是 Groups 和它的 Code 属性? Code 是一个 Int 字段,Groups 是一个实体列表 【参考方案1】:

你应该使用SqlceFunctions 而不是SqlFunctions

所以你的代码应该是

  Groups.Where(x =>  SqlCeFunctions.StringConvert ((double?) x.Code)
                                   .TrimStart() .StartsWith(txtSearch.Text))
        .ToList();

命名空间:System.Data.Entity.SqlServerCompact;

【讨论】:

以上是关于为啥不能使用 SqlFunctions 在 LinQ 中将 int 转换为字符串?的主要内容,如果未能解决你的问题,请参考以下文章

EF Core 中的 SqlFunctions.DatePart 等效项

消除 LET 运算符和 SqlFunctions

为啥 Hibernate 将模式名称添加到 Hsql 函数?

如何使用 EF Core 按周 对数据分组?

关于linq/lambda中如何使用DataDiff的问题

为啥python处理排序列表比未排序列表花费更多时间