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

VB.NET Discussion :

[VB.NET2005]Comment trier un tableau de datarows


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 18
    Points
    18
    Par défaut [VB.NET2005]Comment trier un tableau de datarows
    Bonjour,

    J'utilise une datatable, et je fais dessus une selection à l'aide de la méthode datatable.select(tri,sort) qui me renvoie un tableau de datarow.

    j'assigne ce resultat à une variable que j'ai declare :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim myrows() as datarow = matable.select(tri,sort)
    et j'aimerais appliquer des classements par champs sur myrows()

    Par exemple si ma table a la base contient 3 champs :

    - id_chantier
    _ rue
    _ commune

    J'aimerais pouvoir faire un sort de mes lignes (datarows) d'abord sur id_chantier, puis sur rue, puis sur commune....possible ???

    Eventuellement avec la fonction array.sort, mais je ne vois pas comment l utiliser dans mon cas...

    Je continue de chercher sur google en attendant une reponse ....

    Merci

  2. #2
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 777
    Points
    1 777
    Par défaut
    Bonjour.

    Le select n'est peut être pas la meilleure solution.

    Essayes avec un dataview :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            Dim dt As New DataTable
            dt.Columns.Add("c1")
            dt.Columns.Add("c2")
            dt.Rows.Add("A", "4")
            dt.Rows.Add("A", "3")
            dt.Rows.Add("B", "2")
            dt.Rows.Add("C", "1")
     
            Dim dv As DataView = New DataView(dt)
            dv.Sort = "c1, c2"
    Il suffit alors de "jouer" sur le .sort du dataview et pour le filtre sur le .RowFilter.

    Cdt.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    Merci pour ta réponse, mais j'utilise le select plutot que le dataview justement parce que les performances de ce dernier sont horribles...

    Sur a table de 16000 enregistrements, une selection par datatable.select prend 1 sec, alors qu'un tri par dataview.rowfilter prend 9 secondes

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    étrange, moi avec 30000 lignes x 80 colonnes le dataview s'en sort plutot bien ...

  5. #5
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 777
    Points
    1 777
    Par défaut
    Bonjour.

    C'est certainement du a autre chose que la performance du dataview car finalement les 2 méthodes bossent en mémoire.

    Bizarre, je m'en vais bencher ça !

    Cdt.

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    Alors en fait, j'avoue que je trouve cela etrange aussi...

    J'utilisais des dataview avant qui s'en sortaient tres bien pour filtrer les données...mais la avec ma table access de 16000 lignes, et 180 colonnes ca ne va pas du tout...compare au datatable.select()

    Mais en fait meme sur une table de 30000 lignes et 4 colonnes il reste tres lent...la difference et de l'ordre de 10 fois superieure...

    J'ai aussi trouve un article sur internet d'un type qui a remarque la meme chose, à titre informatif :

    http://geekswithblogs.net/chrisfalte.../04/87143.aspx

  7. #7
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    une fois de plus, quand on fait des choses un peu costaud, il faut bien choisir ses objets dans le framework si on ne veut pas que ca s'écroule ...

Discussions similaires

  1. comment trier un tableau à n dimensions ?
    Par JoseF dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/04/2008, 09h37
  2. [Tableaux] comment trier un tableau multidimensionnel
    Par tibotibo69 dans le forum Langage
    Réponses: 2
    Dernier message: 26/02/2008, 17h04
  3. Comment trier un tableau avec VBScript ?
    Par djokerta dans le forum VBScript
    Réponses: 3
    Dernier message: 27/09/2007, 20h44
  4. Réponses: 5
    Dernier message: 13/06/2006, 11h08
  5. Comment trier un tableau, et repérer les doublon?
    Par danje dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 18h45

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