LOWER和REPLACE对动态linq where语句不起作用

本文关键字:where 语句 不起作用 linq 动态 REPLACE LOWER | 更新日期: 2023-09-27 17:55:06

这是我的代码,

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

显示错误

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

LOWER和REPLACE对动态linq where语句不起作用

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

Dynamic Linq不理解T-SQL。您需要这样制作它:

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

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

这样构建如何?

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