2017-12-17 9 views
0

特殊なトルコ文字を含む顧客名を見つける必要があります。例えば、Customer表は次のとおりです。Entity Framework linqクエリでトルコ文字のレコードを検索する

Id Name  Surname 
-------------------- 
1 Şağbüz Akarca 
2 Üleykö Pancar 

私はこのLINQクエリでIDが1のレコードを検索したい:

context.Customers.Select(c => c.Name.Contains('Sagbuz')); 

もう一つの例:

context.Customers.Select(c => c.Name.Contains('Uleyko')); 

このクエリはに変換され、これは:

SELECT * FROM Customer WHERE Name LIKE N'Sagbuz' 

行が見つかりません。私はこれを達成する方法を見つけることができませんでした。

+0

「Şağbüz」を検索する場合は、なぜ「Sagbuz」を使用していますか? – DavidG

+0

顧客名はデータベースにnvarchar型として保存されますが、私のアプリでは、英語のキーボードレイアウト(トルコ語の文字を使用するのを忘れている)とトルコ語のレコードを探している人がいるため、手紙。トルコのキーボードレイアウトと正しい文字の単語の検索を持っている人には問題はありません。 – Can

+0

データベース構造を変更することはできますか? – DavidG

答えて

1

エンティティに対するLinqとは関係ありません。データベースがAS(アクセントセンシティブ)として設定されている可能性があります。だから、以下のクエリを実行してみてください。

SELECT * FROM Customer WHERE Name LIKE N'Sagbuz' COLLATE Latin1_General_CI_AI 

結果はŞağbüzのために返されます。

また、SQL Serverの照合順序を変更しようとすると、テーブルとレコード全体が影響を受ける可能性があることに注意してください。

+0

代わりにlinq direcltyを使用していただきありがとうございます。私はcontext.Customers.SqlQuery( '');を使用しました。 – Can

関連する問題