[英]Linq Regex for whole word search
我无法找到关于此的最新答案。
Linq不支持正则表达式,并且尝试提取方法并不比框架更加聪明。 如何在linq中的句子列表上进行完整的工作匹配。
我需要\\ b的原因是它可能是字符串的开头或结尾,或者有逗号,破折号或其他类似的分隔符。
private bool isMatch(string searchText, string text)
{
return Regex.IsMatch(searchText, "\\b"+text+"\\b", RegexOptions.IgnoreCase | RegexOptions.Compiled);
}
result p = itemsRep
.Where(fullText=> isMatch(searchText, fullText))
.FirstOrDefault();
我认为您是说Linq-to-SQL / Linq-To-Entities不支持Regex
中的Regex
。
尝试在.Where()
之前添加.AsEnumerable()
.Where()
。
然后, .Where()
方法将枚举任何已翻译查询的结果,而不是尝试将.Where()
表达式转换为SQL。
像这样:
result p = itemsRep
.AsEnumerable()
.Where(fullText => isMatch(searchText, fullText))
.FirstOrDefault();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.