使用Collat​​ionInfo.Comparer在c#和SQL之间实现一致的排序

我试图使用SMO的Collat​​ionInfo.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)才能获得相同的行为。