使用Entity Framework搜索数据库时忽略重音

Øyv*_*hen 13 c# entity-framework non-ascii-characters

我有一个数据库表,其中包含带重音字符的名称.喜欢ä等等.

我需要从包含一些子字符串的表中使用EF4获取所有记录,而不管重音如何.

所以下面的代码:

myEntities.Items.Where(i => i.Name.Contains("a")); 
Run Code Online (Sandbox Code Playgroud)

应该返回包含名称的a所有项目,但也包括所有包含的项目ä,â等等.这可能吗?

stu*_*rtd 13

如果在"名称"列上设置了不区分重音的排序顺序,则查询应按要求运行.

  • 您[可以更改](https://msdn.microsoft.com/en-us/library/ms190920.aspx) 列排序规则,只要它不被 FK、索引、检查、计算列或分布统计引用。SQL 的一个例子是`alter table [dbo].[Table] ALTER COLUMN [ColumnName] nvarchar(MAX) COLLATE SQL_Latin1_General_CP1_CI_AI;` (2认同)

Rob*_*zco 6

设置不区分重音的排序规则将解决问题.

您可以使用下一个查询更改SQL Server和Azure数据库中列的排序规则.

ALTER TABLE TableName
ALTER COLUMN ColumnName NVARCHAR (100)
COLLATE SQL_LATIN1_GENERAL_CP1_CI_AI NOT NULL
Run Code Online (Sandbox Code Playgroud)

SQL_LATIN1_GENERAL_CP1_CI_AILATIN1_GENERAL英文(美国)的排序规则,CP1代码页1252,CI不区分大小写,并且 AI不区分重音.