[英]How to make EF.Functions.Like case-insensitive?
我正在使用 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));
}
我升级到使用 EF.Function.Like 以获得更好的性能:
if (!String.IsNullOrEmpty(searchString))
{
customers = customers.Where(x => EF.Functions.Like(x.Email, $"%{searchString}%"));
}
但是它是区分大小写的,如何让它不区分大小写呢?
从文档:
请注意,如果这个 function 被翻译成 SQL,那么比较的语义将取决于数据库配置。 特别是,它可以区分大小写或不区分大小写。 如果在客户端上评估此 function,那么它将始终使用不区分大小写的比较。
所以,这取决于你的服务器。
作为一种解决方法,您可以将参数设为大写。
if (!String.IsNullOrEmpty(searchString))
{
customers = customers.Where(x => EF.Functions.Like(x.Email.ToUpper(), $"%{searchString.ToUpper()}%"));
}
根据这个应该有一个 function 映射到UPPER
所以你得到正确的 SQL。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.