c# - 有没有一种简单的方法来处理 linq-to-entities 查询中的重音符号

标签 c# sql entity-framework linq-to-entities

假设我有一个可汗数据库。我可以使用此 Entity Framework 代码按名称获取可汗

Khan khan=context.Khans.Where(x=>x.Name.Contains("Öge")).Single();

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

我找到了this SO question它有一个 Compare 方法的解决方案,但我似乎无法将其用于数据库查询:

string.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace);

最佳答案

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

ALTER TABLE Khans ALTER COLUMN Name [varchar](100) COLLATE SQL_Latin1_General_CP1_CI_AI

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

关于c# - 有没有一种简单的方法来处理 linq-to-entities 查询中的重音符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39537218/

相关文章:

c# - IDisposable 与析构函数 : requires thread-safe implementation?

c# - Unity Sprite 运行时的两个图像动画

c# - 是否有 IntelliSense 选项/插件在鼠标悬停时显示参数名称?

sql - 用另一个表 SQL Server 中的值替换列中的 NA

java - 像oracle中的搜索一样吗?

c# - Entity Framework Code-First 启动时太慢

sql-server - Entity Framework 6.2数据库第一次预热

c# - 使用分离实体在 Entity Framework 5 中使用代码优先进行更新

wpf - 此 View 不允许使用“EditItem”。 WPF .NET 4/EF 4.1 - 主 - 详细信息

c# - 检测 Apple 订阅过期