使用CollationInfo.Comparer在c#和SQL之间实现一致的排序
我试图使用SMO的CollationInfo.Comparer来获取我的c#代码,以便像SQL Server一样排序。 我得到了正确的整理,但我的项目仍然没有正确排序。
var collationInfo = CollationInfo.Collations.Single(x => x.Name == "SQL_Latin1_General_CP1_CS_AS") as CollationInfo; var comparer = collationInfo.Comparer; int c = comparer.Compare("Tri-Valley L", "Trimble L");
在这种情况下,c返回’1’,表示Tri-Valley L将在Trimble之后。
但是这个代码在SQL Server中
DECLARE @T TABLE ( Name VARCHAR(20) ) INSERT INTO @T ( Name ) VALUES('Tri-Valley L'), ('Trimble L') SELECT Name FROM @T ORDER BY Name
在Trimble之前返回Tri-Valley。
整理比较的东西是不正常工作,还是我做错了什么?
传统的“SQL”排序规则排序与Windows“字排序”算法不一致。 您需要对数据库中的列使用Windows排序规则(例如Latin1_General_CS_AS)才能获得相同的行为。