- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在针对一些现有的存储过程进行一些 TDD。它们返回 XML,因此我一直在使用 LINQ to XML。
目前,我正在进行一项测试,以证明数据已正确排序。该测试浏览 XML,并创建一个匿名类型的 IEnumerable,其中包含应排序的三列。由此,它通过对第一个 IEnumerable 进行排序来创建第二个 IEnumerable:
var sortedColumns = from g in columns
orderby g.ColumnA ascending,
g.ColumnB ascending,
g.ColumnC ascending
select g;
最后,它断言已排序的列与使用 SequenceEquals 的未排序的列相同。
当数据库排序规则与当前排序规则不同时,就会出现问题。特别是,.NET 将 ColumnB 中的“W-”放在“Wa”之前。
有没有办法按照与任意 SQL Server 排序规则相同的顺序进行排序?如果不是,那么我将如何按照与 SQL_Latin1_General_CP1_CI_AS 相同的顺序进行排序?
最佳答案
如果是 Windows 排序规则,则归结为设置适当的区域设置和排序顺序,如 Sort Order Identifiers 中所示。 ,在 .Net 世界中遵循当前设置的 UI 文化。
如果是 SQL 排序规则,则有点复杂。如果你使用 VARCHAR 你就失去了锁定。对于 NVARCHAR,还有一些希望。请参阅Comparing SQL collations to Windows collations :
A SQL collation's rules for sorting non-Unicode data are incompatible with any sort routine that is provided by the Microsoft Windows operating system; however, the sorting of Unicode data is compatible with a particular version of the Windows sorting rules. Because the comparison rules for non-Unicode and Unicode data are different, when you use a SQL collation you might see different results for comparisons of the same characters, depending on the underlying data type. For example, if you are using the SQL collation "SQL_Latin1_General_CP1_CI_AS", the non-Unicode string 'a-c' is less than the string 'ab' because the hyphen ("-") is sorted as a separate character that comes before "b". However, if you convert these strings to Unicode and you perform the same comparison, the Unicode string N'a-c' is considered to be greater than N'ab' because the Unicode sorting rules use a "word sort" that ignores the hyphen.
出于您的目的(TDD),我建议您远离可疑字符,例如连字符 -
,或有两个 s
一个接一个(德国党卫军问题),或大写I
(土耳其科利顿问题),sh
(西类牙语排序问题)等等等等...坚持正确排序的一小部分字符,例如 a,A,b,B
。我是认真的。
关于sql-server - 如何在 .NET 中进行与 SQL Server 排序规则相同的排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4621046/
我是一名优秀的程序员,十分优秀!