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

このメソッドは、式を SQL.Where()に変換しようとするのではなく、変換されたクエリの結果を列挙します。.Where()

このような:

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