我正在尝试通过搜索字符串过滤列表。它在文档的蓝色注释上说:
Contains
IEnumerable
ToUpper
我的过滤如下:
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)); }
但是,该解决方案区分大小写,我也不十分清楚为什么:因为我正在使用IQueryable,所以它应该使用数据库提供程序实现,默认情况下不区分大小写,对吗?
IQueryable
我正在使用EF Core 2,当前仅运行本地MSSQLLocalDB。
从EF Core 2.1版开始,您可以使用HasConversion()。但是数据库中的信息将以小写形式存储:
builder.Property(it => it.Email).HasConversion(v => v.ToLowerInvariant(), v => v);
我解决了类似的问题。这项更改解决了我所有的问题。