c# - EF.Functions.Like 用于使用可能包含 Unicode 的搜索字符串按多列搜索
问题描述
我试图在EF.Functions.Like
函数的帮助下按多列搜索。这是我的例子:
public static IQueryable<UserProfile> SearchUserHelper(this IQueryable<UserProfile> userProfileQuery,
string search)
{
// Explode string to tokens
var searchTokens = Regex.Split(search, "\\s+").ToList();
var pr = PredicateBuilder.False<UserProfile>();
foreach (var searchToken in searchTokens)
{
pr = pr.Or(e => EF.Functions.Like(e.FirstName, $"%{search}%")
|| EF.Functions.Like(e.MiddleName, $"%{search}%")
|| EF.Functions.Like(e.LastName, $"%{search}%")
|| EF.Functions.Like(e.Login, $"%{searchToken}%"));
}
userProfileQuery = userProfileQuery.Where(pr);
return userProfileQuery;
}
如您所见,这里有一些类似于在我的系统中搜索用户的帮助程序。该方法获取一个搜索字符串,用空格将其分解,并在谓词生成器的帮助下创建一个新的 Where 指令。
因此,我的搜索请求可能类似于:例如“ohn kek”。而且我知道,在系统中我有两个用户:1)FirstName = John,2)Login = kek。我的目标是向用户展示搜索结果。用英语它工作得很好。但是其他语言给了我意想不到的结果。对于其他语言,该方法只采用第一个搜索子字符串并忽略其他。怎么了?我错过了什么吗?
解决方案
推荐阅读
- php - PHP正则表达式以给定数字开始和结束
- linear-programming - 在 OPL 中查找集合的下一个数字
- angular - 角度错误消息:无法绑定到“formGroup”,因为它不是“form”的已知属性
- python - django_braces 的任何替代品?
- mysql - SQL 代码查找未禁止的客户和司机的行程取消率
- javascript - d3.js 想在 dragend 上更改节点样式
- excel - 搜索列名并粘贴数据
- angular6 - 将标题和子标题包装到饼图 3 中的下一行
- vb.net - 如何动态地将“x:name”属性添加到 GridviewColumn?
- google-cloud-platform - 如何使用云 CDN、存储桶和 LB 生成自定义签名 URL 和签名 cookie?