我正在尝试根据客户代码获取客户:
var customer = GetAllCustomers()
.FirstOrDefault(c => c.CustomerCode.ToLower().Trim() ==
customerCode.ToLower().Trim());
在一个案例中,customerCode
是“AndreasGraßl”(我认为这是德国名字)
但是,在数据库(SQL Server 2008 R2)中,数据保存为“Andreas Grassl”(ß变为ss),我的查询找不到匹配项。
有人可以告诉我这是否是数据库中的整理事项,还是C#中的文化事物? 如何修复它以便我的查询返回匹配项?
答案 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
,在查找期间可能是ß
吗?