LOWER和REPLACE不适用于动态linq where语句

时间:2016-07-05 11:28:56

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

这是我的代码,

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

显示错误

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

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

2 个答案:

答案 0 :(得分:1)

Dynamic Linq不了解T-SQL。你会想要这样做:

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

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

答案 1 :(得分:0)

如何以这种方式构建它?

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