我必须在名字和姓氏列中找到字符串项,其中包含一个或多个单词的数据,如下所示。我需要找到搜索文本至少满足两列中任何单词的匹配记录。
即:名字和姓氏。如何使用 LINQ 查询进行搜索?
数据库中:
名字:阿肖克·库马尔
姓氏:马赫什·普拉萨德
搜索文本 = ashok mahesh abc xyz
此处 ashok 匹配名字,mahesh 匹配姓氏。如何使用下面的 LINQ 查询来搜索它?
示例 Linq 查询:
getQuery = (_uow.GetRepository<EntityModel.UserOrganization>().GetAll().Where ( x => x.User.FirstName.ToLower().Contains(SearchText.ToLower()) )
提前致谢
使用
this答案中的函数
FilterByItems
。并用于您的案例。
var searchWords = SearchText.ToLower().Split(' ');
getQuery = _uow.GetRepository<EntityModel.UserOrganization>().GetAll()
.FilterByItems(searchWords,
(x, w) => x.User.FirstName.ToLower().Contains(w)
|| x.User.LastName.ToLower().Contains(w), true);