![](/img/trans.png)
[英]How to convert this SQL QUERY TO LINQ for Entity Framework
[英]How to use SQL wildcards in LINQ to Entity Framework
我有一个看起来像这样的查询:
IQueryable<Profile> profiles = from p in connection.Profiles
where profile.Email.Contains(txtSearch)
select p;
我知道当它转换为SQL时,它使用LIKE '%<value of txtSearch>%'
但是如果txtSearch = "jon%gmail.com"
它将它转换为`LIKE'%jon~%gmail.com%'。 〜逃脱了中间的百分比,这是一张外卡。 我该如何解决这个问题? 我需要能够将外卡放入我的LINQ到EF搜索中。
我不确定这是否可以直接使用linq,因为你只能调用像Contains
, StartsWith
或EndsWith
这样的基本字符串函数。 使用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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.