3

在我的数据库中,我有一个存储城市的表。一些城市有“Foz do Iguaçu”之类的口音。

在我的 MVC 应用程序中,我有一个 JSON,它返回一个基于单词的城市列表,但是,很少有用户不使用口音来搜索城市,例如“Foz do Iguacu”。

在我的数据库中,我有“Foz do Igua Ç u”,但用户用户搜索“Foz do Igua C u”

如何在我的表中搜索记录,忽略重音符号?

这是我的代码:

    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() });
    }
4

2 回答 2

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
于 2015-11-15T17:06:58.963 回答
0

解决方案如下:

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

其中 LATIN1_GENERAL 表示英语(美国),CI 表示不区分大小写,AI 表示不区分重音。

于 2015-12-02T16:33:52.243 回答