Actuellement, j'ai un objet implémentant l'interface IComparable (ASP.NET 3.5, VB). Lorsque je place plusieurs objets instanciés dans une liste générique, je les trier en faisant un simple someList.Sort
. Ma fonction CompareTo()
est la suivante:Utilisation de CompareTo() pour trier en fonction de plusieurs colonnes
Public Function CompareTo(ByVal obj As Object) As Integer Implements
System.IComparable.CompareTo
'default is number of votes (opposite direction, highest first)'
Dim sent As Sentence = CType(obj, Sentence)
Return Not Points.CompareTo(sent.Points)
End Function
Cela fonctionne très bien, sauf que maintenant je dois trier par une autre propriété, la propriété DateSubmitted, comme un sous-ensemble des points. Par exemple, si trois phrases ont des votes: 3, 1, 1, je veux celui avec les plus hauts votes d'abord (évidemment) et des deux phrases avec une voix, celui qui a soumis le plus tôt pour être énuméré. Est-ce possible avec CompareTo(), ou devrais-je juste frapper à nouveau la base de données et le trier là?
Merci
je ne peux pas obtenir someList.OrderBy pour apparaître dans l'intellisense ... je suis sûr que j'utilise 3.5 (j'utilise VS08), mais je suppose qu'il est possible que je ne suis pas? – Jason
Avez-vous 'Imports System.Linq'? Assurez-vous qu'il existe un "" dans votre fichier Web.config. –
ah! ok ... j'ai importé Linq ... que représente "item"? est-ce un objet instancié? – Jason