【问题标题】:LOWER and REPLACE doesn't work on dynamic linq where statementLOWER 和 REPLACE 不适用于动态 linq where 语句
【发布时间】:2016-11-07 05:23:29
【问题描述】:

这是我的代码,

db.myDBContext.my_tables.Where("REPLACE(LOWER(name),\" \",\"\") == \"{0}\"", value);

显示错误

No applicable method 'LOWER' exists in type 'my_table'  

我不能在动态 linq 子句中使用 REPLACELOWER 吗?

【问题讨论】:

  • 这适用于 SQL Server 吗?
  • 是的 @juharr ,用于 SQL Server !
  • name 应该是表示列名的变量,还是字面意义上的名为“name”的列?
  • name 是列名 @Crowcoder ,而不是变量!

标签: c# replace sql-server-2008-r2 lowercase dynamic-linq


【解决方案1】:

Dynamic Linq 不理解 T-SQL。您将希望以这种方式制作它:

.Where(string.Format("(name).ToLower().Replace(\" \", \"\") == \"{0}\" ", value))

在 T-SQL 中有 ToLowerReplace 的类比,Linq 知道如何从 c# 转换它们。 但是如果name 是一个静态列名,那么@Jonny 就会有所作为。您在这里不需要 Dynamic Linq(除非这只是您正在解决的更大问题的人为示例)。

【讨论】:

    【解决方案2】:

    这样构建怎么样?

    Where(t=>t.name.toLower() == value)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      相关资源
      最近更新 更多