C# 实体框架数据库.Database.SqlQuery sql like 将不同的行返回给 SQL Server Ma

本文关键字:返回 Ma Server SQL 数据库 框架 实体 Database SqlQuery like sql | 更新日期: 2023-09-27 18:36:33

在Microsoft SQL Server Management Studio中,我运行以下查询:

SELECT [shop_name]
FROM [vShop]
WHERE [shop_name] LIKE '%p%'

我得到 3 个结果:

shop_name
---------
Phase Eight
shop 7
8th shop

在 C# 中运行以下内容时,我得到以下 2 个结果,而我希望得到与上述相同的 3 个结果:

shop_name
---------
shop 7
8th shop

这是使用实体框架的 C# 中的代码,错误地只得到 2 个结果

sQ += "SELECT [shop_name] AS name ";
sQ += "FROM vShop ";
SqlParameter q1 = new SqlParameter("q1", "%"+q+"%");
object[] parameters = new object[] { q1 };
rtn = db.Database.SqlQuery<shopB>(sQ + " WHERE [shop_name] like @q1", parameters).Skip(iSkip).Take(iTake).ToList();

我可以看到它与类似的通配符子句有关,但找不到解决方案来在 C# 中获得正确的 3 个结果。

任何帮助将非常感谢

C# 实体框架数据库.Database.SqlQuery sql like 将不同的行返回给 SQL Server Ma

如果您使用的是实体框架 - 为什么不使用其功能?为什么要执行"原始"ADO.NET 查询?只运行真正的 Linq 到实体查询会简单得多

using (var ctx = new YourDbContextClass())
{
    var results = ctx.vShops.Where(x => x.shop_name.Contains("p"));
}  

我认为这应该返回与预期相同的 3 行

它看起来像区分大小写的问题。请参阅不是通过在代码中运行查询获得的第一个值具有大写字母"P"。

这可能会对您有所帮助 - http://www.databasejournal.com/features/mssql/article.php/10894_3302341_2/SQL-Server-and-Collation.htm