就像LINQ中的SQL Query一样

use*_*541 0 c# 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>();
Run Code Online (Sandbox Code Playgroud)

但是当查询运行时,我收到以下错误消息:

"LINQ to Entities无法识别方法'Boolean Like(System.String,System.String)'方法,并且此方法无法转换为商店表达式."

有人可以帮我解决我做错的事吗?

Jon*_*eet 8

您正在尝试使用SqlMethods.Like从LINQ到实体的时间.根据文件:

目前仅在LINQ to SQL查询中支持此方法.

你还没有真正解释为什么Contains/ StartsWith/ EndsWith不适合你(根据我的经验,他们被翻译成LIKE条款).