3

英数字の比較のみでEntityFrameworkとLINQを使用してクエリを作成するにはどうすればよいですか?特殊文字を含むAccountNumberフィールドを持つデータベーステーブルがあるため、アカウント番号の例は次のようになります 803-2234502-345。ただし、検索用に指定されたアカウント番号には、特殊文字は含まれていません。8032234502345

    string accountNumber = "8032234502345";
    Provider provider = dbContext.Providers.Where(p => p.AccountNumber == accountNumber).FirstOrDefault();

Regex.Replace比較の両側にを追加しようとしましたが、例外が発生します。

LINQ to Entitiesは、メソッド'System.String Replace(System.String、System.String)'メソッドを認識せず、このメソッドをストア式に変換できません。

ヘルプや提案をいただければ幸いです。

4

1 に答える 1

1

Linq to Entitiesを使用しているため、エンティティマッパーでSQLにマップされる関数のみを使用できます。SQLに適切にマップするために使用している関数を変更することができます(正規表現ではできないと思いますが、それはできませんが、より手動で比較する必要があります)、または(@Dabblernlがコメントで述べたように) )プロバイダー(またはプロバイダーのサブセット)をリスト/または列挙可能にロードし、その上で正規表現を実行します。

だから次のようなもの:

Provider provider = dbContext.Providers.Where(p => p != null && p != "").ToList()
.Where(p => *Do regex comparison here*).FirstOrDefault();

SQLへの可能なマッピングはここにあります:http://msdn.microsoft.com/en-us/library/bb738681.aspx

于 2013-02-13T22:20:12.027 に答える