私は、電話番号に基づいて人のリストをフィルタリングするためにLINQTOENTITYを使用しています。
IEnumerable<Person> personsList = (from person in repoPersons.All()
where person.PhoneNumber.Contains(PhoneSearch)
select person).ToList();
repoPersons.All()
データベースから読み取られたすべての人が含まれます。
PhoneSearch
ユーザーが入力した検索語です。
電話番号は、特別な形式の文字列としてデータベースに保存されます:(+1 (555) 555-6608
例として)。
しかし、ユーザーが5555556608
適切にフォーマットしなくても検索できるようにしたいと思います。(私は彼があまりにも好きな電話番号の一部を検索し556608
、それでも結果を得ることができるようにしたいと思います。
RemoveSpecialCharactersInPhoneNumber
特殊文字を削除して返し、次のように使用するというメソッドを作成しようとしました 。
IEnumerable<Person> personsList = (from person in repoPersons.All()
where RemoveSpecialCharactersInPhoneNumber(person.PhoneNumber).Contains(PhoneSearch)
select person).ToList();
しかし、私はこのエラーを受け取ります:
LINQ to Entities does not recognize the method 'System.String RemoveSpecialCharactersInPhoneNumber(System.String)' method, and this method cannot be translated into a person expression.
では、LINQ TO ENTITYを使用して、PhoneNumberに特殊文字なしのPhoneSearchが含まれているかどうかを確認する方法はありますか?
LINQ TO ENTITYを使用してすべてのリストを取得し、次にLINQ TO OBJECTを使用してそれをフィルター処理できることはわかっていますが、このアプローチを回避しようとしています。
任意の解決策やヒントは大歓迎です