假设我有一个可汗的数据库。我可以使用这个实体框架代码来获取名称
的汗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);
答案 0 :(得分:3)
您可能需要将数据库表中字段的排序规则更改为大小写和重音不敏感,以便LINQ使用.Contains()
等标准方法:
ALTER TABLE Khans ALTER COLUMN Name [varchar](100) COLLATE SQL_Latin1_General_CP1_CI_AI
归类名称末尾的“CI”表示“不区分大小写”,“AI”表示“不区分重音”。