Fai*_*air 1 c# entity-framework asp.net-core-webapi
我使用的是EF Core 3.1 + MySQL,并使用这种方法进行查询:
IQueryable<ApplicationUser> customers = from u in _context.Users where (u.Customer != null && u.IsActive) select u;
if (!String.IsNullOrEmpty(searchString))
{
customers = customers.Where(s => s.Email.Contains(searchString));
}
Run Code Online (Sandbox Code Playgroud)
我升级为使用 EF.Function.Like 以获得更好的性能:
if (!String.IsNullOrEmpty(searchString))
{
customers = customers.Where(x => EF.Functions.Like(x.Email, $"%{searchString}%"));
}
Run Code Online (Sandbox Code Playgroud)
但它是区分大小写的,如何使其不区分大小写呢?
来自文档:
请注意,如果将此函数翻译为 SQL,则比较的语义将取决于数据库配置。特别是,它可以区分大小写或不区分大小写。如果在客户端上计算此函数,则它将始终使用不区分大小写的比较。
所以,这取决于你的服务器。
作为解决方法,您可以将参数设为大写。
if (!String.IsNullOrEmpty(searchString))
{
customers = customers.Where(x => EF.Functions.Like(x.Email.ToUpper(), $"%{searchString.ToUpper()}%"));
}
Run Code Online (Sandbox Code Playgroud)
根据这个,应该有一个函数映射,UPPER以便您获得正确的 SQL。
| 归档时间: |
|
| 查看次数: |
5181 次 |
| 最近记录: |