就像LINQ中的SQL Query一样

时间:2010-10-08 12:53:45

标签: 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>();

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

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

任何人都可以帮助我做错了吗?

4 个答案:

答案 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。它会起作用。