我的问题如下:
我正在寻找一个解决方案,在LINQ中,翻译一个LINQ表达式到SQL的查询。
(我知道在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)‘方法,并且此方法无法转换为存储表达式。“
有人能帮我吗?我做错了什么?
发布于 2010-10-08 12:57:38
当从LINQ到Entities时,您正在尝试使用SqlMethods.Like
。根据the documentation
当前仅在LINQ to SQL查询中支持此方法。
您还没有真正解释为什么Contains
/StartsWith
/EndsWith
不适合您(根据我的经验,它们确实会被转换为LIKE
子句)。
发布于 2010-10-08 12:57:59
你可以这样写你的查询:
var query = from c in _context.prgCity
where c.FullName.EndsWith("buda")
select c.FullName + "|" + c.prgCountry.CountryName;
发布于 2010-10-08 12:58:09
where c.FullName.Contains("buda")
https://stackoverflow.com/questions/3890641
复制相似问题