使用CollationInfo.Comparer实现c#和SQL之间的一致排序

使用CollationInfo.Comparer实现c#和SQL之间的一致排序,c#,sql-server,sorting,collation,smo,C#,Sql Server,Sorting,Collation,Smo,我正试图使用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 =

我正试图使用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“word sort”算法不一致。您需要对数据库中的列使用Windows排序规则(例如Latin1_General_CS_AS)以获得相同的行为。

作为一项健全性检查,如果您将SQL排序更改为按名称排序COLLATE SQL_Latin1_General_CS_AS,它是否仍按相同的顺序排序?它会给出相同的结果。