begin process at 2010 02 09 22:11:39
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

Autre

 > 

Tri d'une liste contenant un tableau


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Tri d'une liste contenant un tableau

mardi 1 juillet 2008 à 13:39:49 | Tri d'une liste contenant un tableau

cybers7119

Salut,

Je travaille en ce moment sur une liste contenant un tableau de string ( List<string[]> ).
Or, je souhaiterais trier cette liste en fonction d'un des éléments contenus dans le tableau de string ( par exemple, string[2] ).
Lorsque j'appelle la fonction Sort(), sans lui donner de paramètres, elle me renvoie une erreur.

Quelqu'aurait une idée ?
mardi 1 juillet 2008 à 13:42:27 | Re : Tri d'une liste contenant un tableau

cybers7119

Ah oui, j'ai oublié de préciser : le tableau de string contient en fait des DateTime que j'ai transformés en string.
Je souhaite les trier du plus ancien au plus récent.
mardi 1 juillet 2008 à 14:02:42 | Re : Tri d'une liste contenant un tableau

billou_13

Membre Club
Salut,

Peux-tu nous donner le code qui permet d'alimenter ton tableau, car on ne voit pas très bien la structure de celui-ci.

Merci,


Billou_13
mardi 1 juillet 2008 à 14:13:26 | Re : Tri d'une liste contenant un tableau

billou_13

Membre Club
Bon, au cas où, je te propose un exemple:

1) Il te faut implémenter un classe dérivant de l'interface IComparer<> te permettant de donner la logique de ta comparaison:

Ex:
    /// <summary>
    /// Compareur de date au sein d'un string[]
    /// </summary>
    public class DateComparer : IComparer<string[]>
    {
        /// <summary>
        /// Méthode permet de comparer
        /// </summary>
        /// <param name="a">Premier tableau de string</param>
        /// <param name="b">Second tableau de string</param>
        /// <returns>renvoie -1 si a[1] inférieur à b[1], 1 si supérieur, 0 si égal</returns>
        public int Compare(string[] a, string[] b)
        {
            DateTime d1 = DateTime.Parse(a[1]);
            DateTime d2 = DateTime.Parse(b[1]);

            return d1.CompareTo(d2);
        }
    }

(A toi de gérer les exceptions, je te laisse faire ^^)

2) Ensuite, il te suffit de faire ton Sort.

Ex:
            List<string[]> tab = new List<string[]>();

            string[] s0 = new string[2];
            s0[0] = "Demain";
            s0[1] = DateTime.Now.AddDays(1.0).ToString();

            string[] s1 = new string[2];
            s1[0] = "Aujourd'hui";
            s1[1] = DateTime.Now.ToString();

            string[] s2 = new string[2];
            s2[0] = "Hier";
            s2[1] = DateTime.Now.Subtract(new TimeSpan(1, 0, 0, 0)).ToString();

            tab.Add(s0);
            tab.Add(s1);
            tab.Add(s2);

            tab.Sort(new DateComparer());

Voila, j'espère que ce que tu cherches ressemble à cela ^^

Bonne après midi,


Billou_13
mardi 1 juillet 2008 à 14:17:58 | Re : Tri d'une liste contenant un tableau

billou_13

Membre Club
Un p'tit conseil néanmoins, si tu souhaites gérer des dates dans une colonne, je te conseille de typé ton code.

Tu peux faire simplement une classe contenant "toutes les colonnes" (typées):
- string
- date
- int
- etc...

Et travailler avec un objet du type List<TaClasse>.

Ce sera plus pratique et plus facile à comprendre (et plus rapide dans l'exécution des traitements).
De plus, si tu souhaites ajouter une colonne, ce sera beaucoup plus simple

C'était une suggestion,


Billou_13
mardi 1 juillet 2008 à 14:23:14 | Re : Tri d'une liste contenant un tableau

cybers7119

En fait, mon tableau de string contient les quatre colonnes suivantes :
1) une DateTime que j'ai transformé en string (sous cette forme "12/21/2008")
2), 3), 4) juste du texte
Il n'y aura pas de colonnes à ajouter.
mardi 1 juillet 2008 à 14:36:19 | Re : Tri d'une liste contenant un tableau

cybers7119

Génial, ta méthode sur DataComponer fonctionne !
Toutefois, connais-tu le moyen de faire ce filtre non pas sur un DateTime, mais sur un string contenant uniquement la date (sans l'heure), du genre "12/21/2008" ?
mardi 1 juillet 2008 à 15:03:38 | Re : Tri d'une liste contenant un tableau

billou_13

Membre Club
A toi de faire disparaître les secondes, minutes et heures dans ton code ^^

Par exemple:

public int Compare(string[] a, string[] b)
{
  DateTime d1 = DateTime.Parse(a[1]);
  d1 = d1.Subtract(new TimeSpan(0, d1.Hour, d1.Minute, d1.Second, d1.Millisecond));
  DateTime d2 = DateTime.Parse(b[1]);
  d2 = d2.Subtract(new TimeSpan(0, d2.Hour, d2.Minute, d2.Second, d2.Millisecond));

  return d1.CompareTo(d2);
}

Néanmoins, si tu parse un string de type "dd/MM/yyyy", tu n'auras pas les heures, minutes, secondes ... et cela fonctionnera.

Perso, c'est la seule méthode que je vois sur le coup,


Billou_13


Cette discussion est classée dans : string, liste, tableau, tri, contenant


Répondre à ce message

Sujets en rapport avec ce message

Probleme de tri d'un tableau de String[] [ par coucoual ] Bonjour à tous ! Voila j'ai un petit soucis pour effectuer un tri . j'ai plusieurs idées mais je ne sais pas vraiment ou m'orienter. Je m'expliqu Vider un tableau [ par seyev ] Salut à vous !J'ai un tableau de string (string[] tablo;) et je voudrais le vider (mettre sa longueur à 0). Comment faire ?Je suppose que si je fais t Tableau dans une structure [ par kiboumz ] Bonjour,J'aimerais savoir comment faire pour mettre un tableau dans une structureEx:        struct structTest        {            public String[] Cham ListBox avec Bouton de tri [ par M5i9k ] Bonjour, je voudrais utiliser dans mon application une liste possédant tout en haut differents boutons de tri, comme l'affichage détaillé de l'explora importer un tableau excel [ par manuweb_21 ] J'ai un fichier qui s'appelle: "conversiontable.txt" qui contient un tableau exporté de excel (:-> séparations = tabulations) il a cette forme: Argon Tableau simple en C# [ par SinXJon ] Bonjour a tous! J'essaie de me créer 2 tableau que je pourrai ens retourner un tableau [ par maxelpiratos ] bonjour, je débute en C# et j'ai un soucis tout simple : je n'arrive pas à retourner un tableau dans une fonction :/voilà le problème : public <FONT c Envoyer un tableau string via les sockets [ par moihenry ] Bonjour, j'ai un tableau du genre : string[] tab = new string[] { "test","test0","test1" }; Comment je dois faire pour l'envoyer par les sockets, pa tableaux contenant plusieurs types [ par mathmax ] Bonjour, je cherche à faire un tableau à deux dimensions qui contient plusieurs types, comme cela :{{"une string", un entier},{"une string", un entier Propriété avec arguments [ par Charles Racaud ] Bonjour,Petit problème, je n'arrive pas à faire ce que je veux faire: snif.Aussi, c'est normal que je pose la question.Le Problème:J'ai un tableau de


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales