如何在LINQ to Entity Framework中使用SQL通配符
发布时间:2020-07-16 07:03:08 所属栏目:MsSql 来源:互联网
导读:我有一个看起来像这样的查询: IQueryableProfile profiles = from p in connection.Profiles where profile.Email.Contains(txtSearch) select p; 我知道当它转换为SQL时,它使用LIKE’% txtSearch%’的值,但是如果txtSearch =“jon%gmail.c
|
我有一个看起来像这样的查询: IQueryable<Profile> profiles = from p in connection.Profiles
where profile.Email.Contains(txtSearch)
select p;
我知道当它转换为SQL时,它使用LIKE’%< txtSearch>%’的值,但是如果txtSearch =“jon%gmail.com”它将它转换为`LIKE’%jon~%gmail.com%’ . 逃脱了中间的百分比,这是一张外卡.我该如何解决这个问题?我需要能够将通配符放入我的LINQ到EF搜索中. 解决方法我不确定这是否可以直接使用linq,因为你只能调用像Contains,StartsWith或EndsWith这样的基本字符串函数. It is possible with Entity SQL所以你可以结合这些方法.var query = new ObjectQuery<Profile>(
@"SELECT VALUE p
FROM CsdlContainerName.Profiles AS p
WHERE p.Email LIKE '" + wildcardSearch + "'",context);
var result = query.AsQueryable().OrderByDescending(p => p.Name).ToList();
ESQL注入反击:) 没有注入漏洞的第二个版本(我没有尝试但它应该工作): var commandText =
@"SELECT VALUE p
FROM CsdlContainerName.Profiles AS p
WHERE p.Email LIKE @search";
var query = new ObjectQuery<Profile>(commandText,context);
query.Parameters.Add(new ObjectParameter("search",wildcardSearch));
var result = query.AsQueryable().OrderByDescending(p => p.Name).ToList(); (编辑:日照站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql – 如何将表模式和约束复制到不同数据库的表?
- sql-server-2008-r2 – 定义计算列引用另一个表
- SQL Server提示选定的用户拥有对象,所以无法除去该用户”
- sql-server – 如何验证Windows集群以前是否已成功验证?
- 一段压缩MS SQLServer日志的语句
- 更新数据库行而不在PostgreSQL 9.2中锁定表
- sql server中批量插入与更新两种解决方案分享(存储过程)
- sql-server – Varchar(max)字段,在8000个字符后切断数据
- SQL Server存储过程中编写事务处理的方法小结
- 设置密码保护的SqlServer数据库备份文件与恢复文件的方法
