Linq-Regex用于全词搜索

本文关键字:搜索 用于 Linq-Regex | 更新日期: 2023-09-27 18:23:52

我最近找不到一个合适的答案。

Linq不支持regex,尝试提取一个方法并不能胜过框架。我如何在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-Regex用于全词搜索

我认为您所说的是Linq-to-SQL/Linq-to-Entities不支持表达式中的Regex

尝试在.Where()之前添加.AsEnumerable()

然后,.Where()方法将枚举任何已翻译查询的结果,而不是尝试将.Where()表达式转换为SQL。

像这样:

result  p = itemsRep
            .AsEnumerable()
            .Where(fullText => isMatch(searchText, fullText))
            .FirstOrDefault();