C# 与LINQ中的SQL查询类似
我的问题如下: 我正在寻找一种LINQ解决方案,它将LINQ表达式转换为类似SQL的查询 (我知道在LINQ中,我可以使用Contains、StarsWidth、EndWidth而不是'LIKE',但在我的情况下,这不是一个好的解决方案,如果您检查生成的sql脚本,您将看到它不是使用LIKE) 我发现了很多使用System.Data.Linq.SqlClient.SqlMethods.Like方法的文章 所以我写了我的问题:C# 与LINQ中的SQL查询类似,c#,sql,linq,C#,Sql,Linq,我的问题如下: 我正在寻找一种LINQ解决方案,它将LINQ表达式转换为类似SQL的查询 (我知道在LINQ中,我可以使用Contains、StarsWidth、EndWidth而不是'LIKE',但在我的情况下,这不是一个好的解决方案,如果您检查生成的sql脚本,您将看到它不是使用LIKE) 我发现了很多使用System.Data.Linq.SqlClient.SqlMethods.Like方法的文章 所以我写了我的问题: var query = from c in _context.prgC
var query = from c in _context.prgCity where SqlMethods.Like( c.FullName, "%buda") select c.FullName + "|" + c.prgCountry.CountryName;
return query.ToList<string>();
var query=from c in _context.prgCity where SqlMethods.Like(c.FullName,“%buda”)选择c.FullName+“|”+c.prgccountry.CountryName;
返回query.ToList();
但在运行查询时,我会收到以下错误消息:
LINQ to Entities无法识别方法“Boolean Like(System.String,System.String)”方法,此方法无法转换为存储表达式
任何人都可以帮助我,我做错了什么?您正在尝试使用
SqlMethods。就像从LINQ到实体时的。根据:
当前仅在LINQ到SQL查询中支持此方法
您还没有真正解释为什么包含/StartsWith
/EndsWith
对您不起作用(根据我的经验,它们确实会被翻译成类似的子句)。您可以将查询编写为:
var query = from c in _context.prgCity
where c.FullName.EndsWith("buda")
select c.FullName + "|" + c.prgCountry.CountryName;
使用Contains而不是SQLMethods.Like。它会起作用的。我试图解释为什么Startwidth方法对我不好。@user295541:我觉得你的解释没有说服力<代码>开始时使用
覆盖“期限%”,结束时使用
覆盖“%期限”,包含
覆盖“%期限%”。你唯一需要“喜欢”的时候是在做“te%rm”。实际上,“te%rm”可以通过使用StartsWith
和EndsWith
来实现。像“t%e%r%m”这样的东西不能。
where c.FullName.Contains("buda")