2017-10-13 16 views
0

J'ai une requête linq simple qui trie les enregistrements basés sur dateTime à la fois décroissant et ascendant. pour une raison quelconque, il échoue à 13:00:00 heures.LINQ OrderBy requête ne parvient pas à trier correctement en descendant dateTime

sortedrecords = sortedrecords.OrderByDescending(x => x.DateTime).ThenBy(x=>x.Time); 

est censé trier 2PM, 1PM, 12PM. Mais les enregistrements de 1 heure arrivent à la fin.

Y at-il un problème avec ma requête? Toutes les suggestions aideront.

Merci

Trier par descendant (non)

10/12/2017 2:00:56 PM
12/10/2017 14:00:50
12/10/2017 12:29:41
12/10/2017 12:28:32
12/10/2017 12:27:35
12/10/2017 11:21:35
10/12/2017 11:14:16
10/12/2017 13:49:28
12/10/2017 13:43:23

Trier par ordre croissant (correct)

10/12/2017 12:27:35 PM
10/12/2017 12:28:32
12/10/2017 12:29:41
12/10/2017 13:43:23
12/10/2017 13:49:28
10/12/2017 2:00:50 PM
10/12/2017 2:00:56 PM

+2

Quelles sont vos propriétés 'x.DateTime' et' x.Time'? Veuillez montrer à quoi ressemble la classe de l'objet 'triedrecords'. – Sach

+0

Essayez 'OrderByDescending (x => x.DateTime.Date) .ThenBy (x => x.Time);' –

+0

@sach La propriété DateTime ressemble à ceci 10/12/2017 12:23:28 PM. et j'ai même essayé ce triedrecords = triedrecords.OrderByDescending (x => x.DateTime); –

Répondre

0

Puisque vous n'avez pas spécifié vos types d'objets, vos types de colonnes, votre base de données (en supposant que vous en utilisez un), pourquoi avez-vous utilisé un nom de type .Net comme nom de colonne, etc. a List:

sortedrecords = sortedrecords.OrderByDescending(x => DataTime.Parse(x.DateTime));