2016-09-16 2 views
1

Khansのデータベースがあるとします。私はこの問題は、実際にユーザーが代わりに「OGE」の「オゲ」と入力し、任意の一致を得ないだろうということです名前linq-to-entitiesクエリでアクセント記号を扱う簡単な方法はありますか?

Khan khan=context.Khans.Where(x=>x.Name.Contains("Öge")).Single(); 

でカーンをフェッチするために、このエンティティフレームワークのコードを使用することができます。これに対処する簡単な方法はありますか?アクセント記号の付いた文字は、検索のアクセントのない文字として常にカウントされますか?

私はCompare方法のためのソリューションを持っているが、私は、データベースクエリのためにこれを使用することができないようthis SO questionが見つかりました:

string.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace); 
+1

1つの戦略は、バリアントのセットを作成し、それらのすべてをクエリで使用することです。 – juharr

+1

アクセントとアクセントを無視する場所のLINQの可能な複製](0120-388-301) –

+0

@Cᴏʀʏこのコメントは、 juharrの方法、OPは彼の質問に3つの可能性のある答えとして今ある。彼は自分が気に入ったものを選ぶかもしれません。 –

答えて

3

あなたは、データベーステーブル内のフィールドの照合順序を変更する必要があるかもしれません

ALTER TABLE Khans ALTER COLUMN Name [varchar](100) COLLATE SQL_Latin1_General_CP1_CI_AI 

照合名の末尾に「CI」とは、「大文字と小文字を区別しない」と「AI」は「アクセントを意味:LINQは.Contains()のような標準的な方法で動作するようにするために大文字小文字とアクセントを区別しないことにします - 非感受性。

関連する問題