Je suis en train d'implémenter mon propre BindingList<T>
qui supporte le tri. Tout fonctionne bien jusqu'à présent, mais je suis confus sur la façon dont je devrais mettre en œuvre RemoveSortCore
. La documentation est pas très explicite, il dit seulement:Sortability BindingList <T>: confusion à propos de RemoveSortCore
Supprime toute sorte appliquée avec ApplySortCore si le tri est mis en œuvre dans une classe dérivée
Est-ce que cela signifie que je dois rétablir l'ordre initial des articles? La mise en œuvre montre this MSDN article ne définit que _isSorted
false, sans restaurer réellement l'ordre d'origine, ce qui le rend tout à fait inutile à mon humble avis ...
Si je veux être en mesure de rétablir l'ordre initial, je suppose que je dois maintenir un copie de la collection originale (ou existe-t-il un meilleur moyen?). Mais si je fais cela, comment puis-je gérer les modifications de la collection pendant qu'elle est triée?
- Lors de la substitution
InsertItem
, dois-je ajouter le nouvel élément à la fin de la copie non triés? - Lors de la substitution de
RemoveItem
, l'index est placé dans la collection triée. Mais cela signifie que si je veux également supprimer l'élément de la collection non triée, j'ai besoin de trouver sa position d'origine, qui est une opération O (n), tandis queRemoveItem
devrait normalement être une opération O (1). La même question s'applique également àSetItem
.
Comment géreriez-vous cela? Toutes les suggestions sont les bienvenues
Merci, le premier article est exactement ce que je cherchais! –