IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

BinarySearch ou sort d'une BindingList


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut BinarySearch ou sort d'une BindingList
    Je viens de constater qu'on ne peux pas faire de Sort ni de BinaRySearch sur une bindinglist

    Je trouvais la BindingList bien pratique plutot que de devoir se tapper toute la définition d'interface d'une List<T> pour la rendre bindable

    Quelqu'un aurais-il des idées ou suggestions avant que je ne plonge dans la marmite ?


    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Il y a des propriétés SortProperty et SortDirection pour le tri, mais comme ce sont des implémentations explicites de IBindingList, il faut faire un cast en IBindingList pour y accéder.
    Pour la recherche, pourquoi veux-tu faire spécifiquement un BinarySearch ? Tu as aussi d'autres méthodes pour la recherche :
    - IndexOf (recherche linéaire, donc en O(n), pas terrible pour une grosse liste...)
    - IBindingList.Find : y a pas de détails sur la façon dont c'est implémenté, mais avec un peu de chances il est malin et tient compte du critère de tri pour faire une recherche dichotomique si possible...

    Au pire tu peux implémenter toi-même la recherche dichotomique, c'est assez simple et ça ira sûrement plus vite que d'implémenter IBindingList toi-même

  3. #3
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Merci Tomlev

    Citation Envoyé par tomlev Voir le message
    - IndexOf (recherche linéaire, donc en O(n), pas terrible pour une grosse liste...)
    - IBindingList.Find : y a pas de détails sur la façon dont c'est implémenté, mais avec un peu de chances il est malin et tient compte du critère de tri pour faire une recherche dichotomique si possible...

    Au pire tu peux implémenter toi-même la recherche dichotomique, c'est assez simple et ça ira sûrement plus vite que d'implémenter IBindingList toi-même

    IndexOf O(n) : a proscrire !

    Mais si je veux appliquer differents tris sur ma liste ou la trier sur sur plusieurs critere et si je veux faire des recherches selon les tris appliqués je pense qu'il vaut mieux revenir a une List<T> et me tapper quand meme l'interface
    C'est quand meme dommage d'avoir prevu une BindingList sans ces methodes de base !

  4. #4
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    C'est possible pour ce qui est du tri, mais c'est à toi de coder l'algo
    La classe BindingList<T> ne fournit pas une implémentation de base de tri. Par conséquent, ApplySortCore lève toujours NotSupportedException par défaut. Pour activer le tri, dérivez de BindingList<T> et effectuez les tâches suivantes :

    * Substituez ApplySortCore et implémentez le tri en déclenchant l'événement ListChanged lorsque le tri est terminé.
    * Substituez RemoveSortCore et implémentez la suppression de tri.
    * Substituez SupportsSortingCore et affectez la valeur true à SupportsSortingCore.

    En outre, vous pouvez implémenter les propriétés de tri SortDirectionCore et SortPropertyCore supplémentaires.
    A côté il suffit de faire autant de méthode Sort(...) que nécessaire suivant les possibilités de tri et appeler ApplySortCore pour le mettre en place.

  5. #5
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Merci Stormimon

    Mmmouais .....
    Je me demande quand meme si j'ai intéret a faire ca en espèrant qu'il n'y aura pas de nouvelle impasse

    Ou bien prendre le taureau par les cornes et ecrre cette IBindinglist mo meme (heureusement le designer peut generer un canevas)

Discussions similaires

  1. [Lazarus] Méthode sort dans une TList
    Par pduceux dans le forum Lazarus
    Réponses: 1
    Dernier message: 21/06/2007, 17h43
  2. PB de Sort avec une TcxGrid de Devexpress
    Par Cazaux-Moutou-Philippe dans le forum Delphi
    Réponses: 3
    Dernier message: 31/05/2007, 01h22
  3. Réponses: 6
    Dernier message: 24/05/2007, 11h47
  4. Détecter quand le pointeur souris sort d'une APP.
    Par Bighobbit dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 06/10/2006, 17h49
  5. Réponses: 4
    Dernier message: 11/06/2006, 05h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo