2015-11-15 8 views
3

В моей базе данных у меня есть таблица, в которой хранятся города. В некоторых городах такие акценты, как «Фос-ду-Игуасу».Как искать строку с использованием Entity Framework с .Contains и с нечувствительным к акценту

В моем приложении MVC у меня есть JSON, который возвращает список городов, основанных на слове, однако несколько пользователей не используют акценты для поиска города, например «Foz do Iguacu».

в моей базе данных у меня есть «Фос IGUA БЗ у», но пользователи пользователей ищет «Фос-ду-IGUA C и»

Как можно искать записи в моей таблице, не обращая внимания акценты?

Вот мой код:

using (ServiciliEntities db = new ServiciliEntities()) 
    { 
     List<Cidades> lCidades = db.Cidades.Where(c => c.CidNome.ToLower().Contains(q.Trim().ToLower())).OrderBy(c => c.CidNome).Take(10).ToList(); 
     ArrayList lNomes = new ArrayList(); 
     foreach (Cidades city in lCidades) 
      lNomes.Add(new {city.CidNome, city.Estados.EstNome}); 

     return Json(new { data = lNomes.ToArray() }); 
    } 

ответ

0

Решение следующее:

ALTER TABLE dbo.YourTableName 
ALTER COLUMN YourColumnName NVARCHAR (100) COLLATE SQL_Latin1_General_CP1_CI_AI NULL 

Где Latin1_General означает английский язык (США), CI означает учета регистра и AI означает Accent-Нечувствительность.

1

Вы можете установить акцент нечувствительной сверку заказа на колонке в базе данных. Затем запрос должен работать. Например, если вы установили SQL_LATIN1_GENERAL_CP1_CI_AI в колонку CidNome, запрос будет выполняться по желанию.

Используйте этот SQL скрипт:

ALTER TABLE dbo.YourTableName 
ALTER COLUMN YourColumnName NVARCHAR (100) COLLATE SQL_Latin1_General_CP1_CS_AS NULL 
+0

Есть ли способ сделать это без изменения колонки? – Dan

+0

Ну, я так не думаю, что на самом деле все Entity Framework делает перевод вашего запроса на SQL .. реальное сравнение должно делать базу данных. Если вы будете использовать какой-то хак, это должно привести к потере представление. Так почему вы не можете изменить колонку? –

+1

@PetrAdam прав. Это решение для использования. BTW вы можете настроить Collation для всей базы данных или для всего вашего сервера базы данных. Последние позволяют это для каждой базы данных, которая будет создана. – CodeNotFound