Ho fatto qualche TDD contro alcune stored procedure esistenti. Restituiscono XML, quindi ho utilizzato LINQ in XML.Come ordinare in .NET. Come un confronto di SQL Server?
Al momento, sto lavorando a un test che dimostrerà che i dati sono stati ordinati correttamente. Il test naviga attraverso l'XML e crea un oggetto IEnumerable di tipo anonimo che contiene le tre colonne che dovrebbero essere ordinate. Da questo, si crea una seconda IEnumerable di classificare la prima:
var sortedColumns = from g in columns
orderby g.ColumnA ascending,
g.ColumnB ascending,
g.ColumnC ascending
select g;
Infine, essa afferma che le colonne ordinate sono gli stessi di quelli non ordinati utilizzando SequenceEquals.
Il problema si presenta quando le regole di confronto del database differiscono dalle regole di confronto correnti. In particolare, .NET posiziona "W-" prima di "Wa" in ColumnB.
C'è un modo per ordinare nello stesso ordine di un confronto SQL Server arbitrario? In caso contrario, come dovrei ordinare nello stesso ordine di SQL_Latin1_General_CP1_CI_AS?
Domande correlate: http://stackoverflow.com/questions/11562042/achieving-consistent-sorting-between-c-sharp-and-sql-using-collationinfo-compare, http://stackoverflow.com/questions/ 9384642/what-net-stringcomparer-is-equivalent-sqls-latin1-general-ci-as, http://stackoverflow.com/questions/5581268/custom-collation-ordering –