Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 与LINQ中的SQL查询类似_C#_Sql_Linq - Fatal编程技术网

C# 与LINQ中的SQL查询类似

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

我的问题如下:

我正在寻找一种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>();
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")