我的问题如下:
我正在寻找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无法识别方法'Boolean Like(System.String,System.String)'方法,并且此方法无法转换为商店表达式。”
任何人都可以帮助我做错了吗?
答案 0 :(得分:8)
从LINQ到实体时,您尝试使用SqlMethods.Like
。根据{{3}}:
目前只在LINQ to SQL查询中支持此方法。
你还没有真正解释为什么Contains
/ StartsWith
/ EndsWith
不适合你(根据我的经验,他们做被翻译成LIKE
条款。)
答案 1 :(得分:4)
您可以将查询编写为:
var query = from c in _context.prgCity
where c.FullName.EndsWith("buda")
select c.FullName + "|" + c.prgCountry.CountryName;
答案 2 :(得分:1)
where c.FullName.Contains("buda")
答案 3 :(得分:0)
使用Contains而不是SQLMethods.Like。它会起作用。