我的問題是這樣的:像SQL查詢在LINQ
我正在尋找在LINQ的解決方案,其轉化LINQ表達式到SQL LIKE查詢。 (我知道在LINQ中我可以使用Contains,StarsWidth,EndWidth而不是'LIKE',但在我的情況下不是一個好的解決方案,如果你檢查生成的SQL腳本,你會看到它不是使用LIKE)
我發現很多文章使用的System.Data.Linq.SqlClient.SqlMethods.Like方法 所以我寫了我的查詢:
var query = from c in _context.prgCity where SqlMethods.Like(c.FullName, "%buda") select c.FullName + "|" + c.prgCountry.CountryName;
return query.ToList<string>();
但是,當查詢正在運行出現以下錯誤信息:
「LINQ to Entities does不識別方法'Boolean Like(System.String,System.String)'方法,並且此方法不能轉換爲存儲表達式。「
任何人都可以幫助我,我做錯了什麼?
我試圖解釋爲什麼Startwidth方法對我不好。 – user295541 2010-10-08 13:33:55
@ user295541:我沒有發現你的解釋令人信服。 'StartsWith'涵蓋「term%」,'EndsWith'涵蓋「%term」,「Contains'涵蓋」%term%「。你需要「喜歡」的唯一時間是如果你在做「te%rm」。實際上,「te%rm」可以通過使用'StartsWith'和'EndsWith'完成。像「t%e%r%m」這樣的東西不能。 – Brian 2010-10-08 14:00:22