1

我无法找到最近的体面答案。

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();
4

1 回答 1

2

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

尝试.AsEnumerable()在您的.Where().

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

像这样:

result  p = itemsRep
            .AsEnumerable()
            .Where(fullText => isMatch(searchText, fullText))
            .FirstOrDefault();
于 2013-07-17T23:13:02.710 回答