0

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

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

在一种情况下,customerCode“Andreas Graßl”(我认为这是一个德国名字)

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

有人可以告诉我这是数据库中的排序规则还是 C# 中的文化问题?
如何修复它以便我的查询返回匹配项?

4

4 回答 4

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

于 2013-08-27T10:06:08.033 回答
1

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

SELECT *
FROM Person
WHERE DIFFERENCE(Person.LastName, 'Graßl') >= x
于 2013-08-27T10:19:46.153 回答
0

请运行脚本以通过以下 Unicode 格式重新更新 CustomerCode:

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

希望对你有帮助!!

于 2013-08-27T09:54:44.867 回答
0

在德语中,ß并且ss在某种程度上可以互换使用。用户输入是否可能是ss在保存期间以及稍后ß在查找期间?

于 2013-08-27T09:56:42.850 回答