是否有一种简单的方法来处理LINQ到实体查询中的重音符号

Mat*_*hew 2 c# sql linq-to-entities entity-framework

假设我有可汗的数据库。我可以使用此实体框架代码按名称提取可汗

Khan khan=context.Khans.Where(x=>x.Name.Contains("Öge")).Single();
Run Code Online (Sandbox Code Playgroud)

问题在于,在实践中,用户将键入“ Oge”而不是“Öge”,并且不会获得任何匹配项。有没有一种简单的方法可以解决这个问题,以便带有重音符号的字母始终算作没有重音的字母进行搜索?

我发现了这样的问题该问题为该方法提供了解决方案,Compare但我似乎无法将其用于数据库查询:

string.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace);
Run Code Online (Sandbox Code Playgroud)

Cᴏʀ*_*ᴏʀʏ 5

您可能需要将数据库表中字段的排序规则更改为区分大小写和不区分大小写,以使LINQ可以使用以下标准方法.Contains()

ALTER TABLE Khans ALTER COLUMN Name [varchar](100) COLLATE SQL_Latin1_General_CP1_CI_AI
Run Code Online (Sandbox Code Playgroud)

排序规则名称末尾的“ CI”表示“不区分大小写”,“ AI”表示“不区分重音”。