2017-12-17 2 views
0

특수한 터키어 문자가 포함 된 고객 이름을 찾아야합니다. 예를 들어, Customer 테이블은 다음과 같습니다터키어 문자로 레코드를 찾으려면 Entity Framework linq 쿼리

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

또 다른 예 :이 쿼리로 변환됩니다

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

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

내가이 LINQ 쿼리와 ID 1과 기록을 찾으려면 이 :

SELECT * FROM Customer WHERE Name LIKE N'Sagbuz' 

행을 반환하지 않습니다. 나는 이것을 달성 할 길을 찾을 수 없었다.

+0

'Şağbüz'를 검색하려면 왜'Sagbuz '를 사용하고 있습니까? – DavidG

+0

고객 이름은 데이터베이스에 nvarchar 유형으로 저장되지만 내 앱의 경우 영어 키보드 레이아웃 (터키어 문자 사용을 잊어 버렸기 때문에)을 사용하는 터키어 문자없이 이름을 검색하는 사용자가 있으며 터키어로 레코드를 찾고 싶어합니다. 편지. 터키어 키보드 레이아웃을 사용하고 올바른 문자로 단어를 검색하는 사람들에게는 아무런 문제가 없습니다. – Can

+0

데이터베이스 구조를 전혀 변경할 수 있습니까? – DavidG

답변

1

법인에 대한 Linq와는 관련이 없습니다. 아마도 데이터베이스가 AS (Accent Sensitive)로 구성되어있을 것입니다. 그래서 아래 쿼리를 실행 해보십시오.

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