与德语字母ß的字符串比较

时间:2013-08-27 09:48:26

标签: c# sql linq cultureinfo

我正在尝试根据客户代码获取客户:

var customer = GetAllCustomers()
               .FirstOrDefault(c => c.CustomerCode.ToLower().Trim() ==
                                    customerCode.ToLower().Trim());

在一个案例中,customerCode“AndreasGraßl”(我认为这是德国名字)

但是,在数据库(SQL Server 2008 R2)中,数据保存为“Andreas Grassl”(ß变为ss),我的查询找不到匹配项。

有人可以告诉我这是否是数据库中的整理事项,还是C#中的文化事物? 如何修复它以便我的查询返回匹配项?

4 个答案:

答案 0 :(得分:3)

string str1="Andreas Graßl";
string str2="Andreas Grassl";
Console.WriteLine(string.Equals(str1,str2));  //False
Console.WriteLine(string.Equals(str1,str2,StringComparison.CurrentCulture));  //True

所以我建议你用string.Equals()

更改你的代码

详细说明: http://msdn.microsoft.com/en-us/library/vstudio/cc165449.aspx

答案 1 :(得分:1)

一种解决方案可能是使用DIFFERENCE执行“听起来像”搜索:

SELECT *
FROM Person
WHERE DIFFERENCE(Person.LastName, 'Graßl') >= x

答案 2 :(得分:0)

请运行脚本以按照Unicode格式重新更新CustomerCode:

UPDATE Customer SET CustomerCode = N'Andreas Graßl' WHERE CustomerID = [YourCustomerID]

希望这会对你有所帮助!!

答案 3 :(得分:0)

在德语中,ßss可以互换使用。用户输入在保存期间是ss,在查找期间可能是ß吗?