c# - 如何使用带有 .Contains 和重音不敏感的 Entity Framework 搜索字符串

标签 c# entity-framework diacritics accent-insensitive

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

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

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

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

这是我的代码:

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

最佳答案

您可以在数据库 的列上设置不区分重音的排序规则顺序。然后查询应该工作。例如,如果您将 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

关于c# - 如何使用带有 .Contains 和重音不敏感的 Entity Framework 搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33722136/

相关文章:

c# - 延迟加载不适用于 Entity Framework 中的 POCO 类

c# - Linq to Entities,随机顺序

java - 匹配正则表达式模式时如何忽略变音符号?

c# - 将组合变音符号转换为简单的 utf

c# - NHibernate DateTime 毫秒精度

c# - 在 SharePoint(自定义操作)或 C# 项目中获取货币汇率的最佳和最简单方法是什么

c# - 在 C# 中表达类型关系并避免长类型参数列表

entity-framework - 多个用户管理器

MySQL从一个表复制到另一个表删除重音

C#获取文件大小