我需要比较C#中的2个字符串,并将重音字母与非重音字母相同.例如:
string s1 = "hello";
string s2 = "héllo";
s1.Equals(s2, StringComparison.InvariantCultureIgnoreCase);
s1.Equals(s2, StringComparison.OrdinalIgnoreCase);
Run Code Online (Sandbox Code Playgroud)
这两个字符串需要相同(就我的应用程序而言),但这两个语句都评估为false.C#中有没有办法做到这一点?
我想在SQL中比较两个varchars,一个是类似的Cafe,另一个Café在SQL中有一种方法可以比较两个值.例如:
SELECT *
FROM Venue
WHERE Name Like '%cafe%'
Run Code Online (Sandbox Code Playgroud)
那么,如果有一个名称的场所,Big Bobs Café Extraordinaire它将被包含在结果集中?
如何使用LINQ to SQL忽略对SQL Server数据库的查询中的重音(如',`,〜)?
更新:
仍然没有想出如何在LINQ中做到这一点(或者即使它可能)但我设法改变数据库来解决这个问题.只需要更改我想要搜索的字段的排序规则.我的整理是:
SQL_Latin1_General_CP1_CI_AS
Run Code Online (Sandbox Code Playgroud)
CI表示"Case Insensitive"和AS表示"Accent Sensitive".只需将AS改为AI,使其成为"Accent Insensitive".SQL语句是这样的:
ALTER TABLE table_name ALTER COLUMN column_name column_type COLLATE collation_type
Run Code Online (Sandbox Code Playgroud) 假设我有可汗的数据库。我可以使用此实体框架代码按名称提取可汗
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# ×2
collation ×1
linq ×1
linq-to-sql ×1
localization ×1
sql ×1
sql-server ×1
string ×1
t-sql ×1