0

私のDBには、次のようなテキストがあります:'AVENUEGEORGESLEMAîTRE'。ご覧のとおり、「i」文字には^があります。

LINQを使用して、この特殊文字を無視して検索を実行することは可能ですか。

そこで、「AVENUE GEORGES LEMAITRE」を検索して、「AVENUEGEORGESLEMAîTRE」を見つけたいと思います。

var address = AddressRepository.Find(m => m.Street == "AVENUE GEORGES LEMAITRE").ToList();

可能?どのように?

ありがとう。

4

2 に答える 2

1

試す:

List<String> address = (from ad in addressRepository where string.Compare("AVENUE GEORGES LEMAITRE", ad.Street.ToUpperInvariant(),CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace) == 0 select ad.Street).ToList();

さもないと

このブログ エントリが役立つ場合があります。

文字列から分音記号を削除する方法について詳しく説明します。

コード サンプルの下部に移動します。

文字が置き換えられると、文字列を比較できます。

お役に立てれば。

http://www.siao2.com/2007/05/14/2629747.aspx

于 2012-05-22T13:35:20.057 に答える
0

データベース モデルを変更してStreet、ユーザーに表示または承認する「実際の」バージョンと共に、「正規」バージョンを含める必要があります。この標準バージョンは、たとえば、すべて大文字で、すべての分音符号が削除され、特定の Unicode正規化形式に正規化されている可能性があります。

これを行うメソッドがあると仮定すると(ここから始めるのがよいCanonicalizeかもしれません)、アドレスを保存するときにそれを呼び出します。

var address = /* incoming data */
address.CanonicalStreet = Canonicalize(address.Street);
/* save the model */

また、データを取得するときにも使用します。

var street = "AVENUE GEORGES LEMAITRE";
street = Canonicalize(street);
var address = AddressRepository.Find(m => m.CanonicalStreet == street).ToList();
于 2012-05-22T13:04:13.373 に答える