如何使用 Entity Framework 和 .Contains 以及不区分重音的方式搜索字符串
How to search string using Entity Framework with .Contains and with accent-insensitive
在我的数据库中,我有一个 table 存储城市。有些城市有像 "Foz do Iguaçu".
这样的口音
在我的 MVC 应用程序中,我有一个 JSON return 基于单词的城市列表,但是,很少有用户不使用重音来搜索城市,例如"Foz do Iguacu".
在我的数据库中我有 "Foz do IguaÇu" 但用户
用户搜索 "Foz do IguaCu"
如何忽略重音符号在 table 中搜索记录?
这是我的代码:
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
解决方法如下:
ALTER TABLE dbo.YourTableName
ALTER COLUMN YourColumnName NVARCHAR (100) COLLATE SQL_Latin1_General_CP1_CI_AI NULL
其中 LATIN1_GENERAL 表示英语(美国),CI 表示不区分大小写,AI 表示不区分重音。
在我的数据库中,我有一个 table 存储城市。有些城市有像 "Foz do Iguaçu".
这样的口音在我的 MVC 应用程序中,我有一个 JSON return 基于单词的城市列表,但是,很少有用户不使用重音来搜索城市,例如"Foz do Iguacu".
在我的数据库中我有 "Foz do IguaÇu" 但用户 用户搜索 "Foz do IguaCu"
如何忽略重音符号在 table 中搜索记录?
这是我的代码:
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
解决方法如下:
ALTER TABLE dbo.YourTableName
ALTER COLUMN YourColumnName NVARCHAR (100) COLLATE SQL_Latin1_General_CP1_CI_AI NULL
其中 LATIN1_GENERAL 表示英语(美国),CI 表示不区分大小写,AI 表示不区分重音。