2016-07-05 72 views
0

這裏是我的代碼,LOWER和REPLACE動態LINQ不起作用where語句

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

它顯示錯誤的動態LINQ條款

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

我不能使用REPLACELOWER

+0

這是用於SQL Server嗎? – juharr

+0

是@juharr,適用於SQL Server! – zey

+0

'name'應該是一個表示列名稱的變量,還是實際上是一個名爲「name」的列? – Crowcoder

回答

1

動態Linq不理解T-SQL。你會想這樣手藝吧:

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

有在T-SQL爲ToLowerReplace模擬和LINQ知道如何將它們從C#翻譯。 但是,如果name是一個靜態列名稱,那麼@Jonny會處理某些事情。這裏你不需要動態Linq(除非這只是你正在解決的更大問題的一個人爲的例子)。

0

以這種方式構建它如何?

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