begin process at 2010 02 10 08:24:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Algorithme

 > 

Maths

 > 

Array.Sort sur un tableau de structure


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

Array.Sort sur un tableau de structure

vendredi 25 juillet 2008 à 23:44:13 | Array.Sort sur un tableau de structure

MAQFAB

Bonjour à tous et à toutes,

J'essaye d'utiliser la fonction Array.Sort d'une manière un peu poussée, et je ne m'en sors pas.

Considérons une structure :

public struct MyStruct {
int a;
int b;
int c;}

Considérons une classe :

public class MyClass {
MyStruct[] TabStruct;
}

Question :

Que faut-il mettre en oeuvre pour trier le tableau de structure par rapport à la propriété a, puis b, puis c ?

Exemple :

a   1   3   2   3
b   5   5   2   4
c   3   2   6   2

me renverrai

a   1   2   3   3
b   5   2   4   5
c   3   6   2   2

En SQL, cela pourrait donner : SELECT a, b,c FROM TabStruct ORDER BY a, b, c

Merci pour vos réponses éventuelles
samedi 26 juillet 2008 à 06:37:24 | Re : Array.Sort sur un tableau de structure

WishhhMaster

Salut,

Une solution est de te créer une classe qui implémente System.Collections.IComparer (ou sa version générique) et dans la méthode Compare tu fais tes comparaisons dans l'ordre que tu veux

Exemple:

public class MyClass {
MyStruct[] TabStruct;
//..rempli MyStruct
Array.Sort(TabStruct,new StructComparer());
}

//version générique
 public class StructComparer : System.Collections.Generic.IComparer<MyStruct>
    {
        int System.Collections.Generic.IComparer<MyStruct>.Compare(MyStruct m1, MyStruct m2)
        {
            if (m1.a < m2.a)
                return -1;
            else if (m1.a > m2.a)
                return 1;
            else
            {
                if (m1.b < m2.b)
                    return -1;
                else if (m1.b > m2.b)
                    return 1;
                else
                {
                    if (m1.c < m2.c)
                        return -1;
                    else if (m1.c > m2.c)
                        return 1;
                    return 0;
                }
            }
           
        }
    }

Sinon, si tu utilise .net 3.5, tu dois pouvoir le faire avec Linq plus simplement (pas sur de la syntaxe)

var list = from st in MyStruct
            orderby st.a,st.b,st.c
            select st;




Cette discussion est classée dans : int, tableau, array, structure, sort


Répondre à ce message

Sujets en rapport avec ce message

Structure avec tableau [ par bip98 ] Bonjour,Je sais, m'a question peut paraitre simple... mais j'ai vraiment du mal ! pourtant c'est surment quelques choses de très simple..je voudrais c Tableau dans une structure [ par bip98 ] Je n'arrive pas à créer un tableau dans une structure..voilà mon code:public struct struct_motor   {     public string port_dev;     public int v_ind; Array.Sort() [ par engelho ] Bonjour,Je possède un un tableau que je souhaite trier. Toutefois ce tableau comprend des objets...J'ai implémenté la fonction CompareTo().Mais je me Passer un pointeur sur tableau de structure [ par olibara ] BonjourDepuis C# j'aimerais appeller une Dll ecrite en CJ'ai plusieurs fonctions dont certaines utilisent un pointeur sur tableau de structure, commen Remplir un tableau (dans une boucle) [ par luudo ] Bonjour , je souhaite insérer les valeurs obtenues dans ma boucle dans un tableau, mais je n'arrive pas a remplir ce tab Array en readonly [ par Julien237 ] Bonjour,J'ai une propriété de ma classe qui est un tableau de float, j'aurais voulu que l'utilisateur puisse toujours avoir accès à ces informations, passage de valeurs C# (Com) => ASP [ par leromantique6 ] bonjour!Dslé de poster un nouveau sur un sujet qui est sensiblement identique a celui que j'ai deja posté. Mais comme le precedent a deja etait validé Passer un tableau de Byte à une DLL [ par hdr ] Salut à tous,Je souhaiterai utiliser une fonction dans une DLL dont le prototype est :    public virtual int GetImageRawData(ref int pBuf, int bufLen) Tableau dynamique + enregistrement [ par Ishizaki ] Bonjour tout le monde, une petite question concernant la gestion d'un tableau dynamique et l'enregistrement:Ce que je fais:1)Création du tableau dynam remplir tableau [ par dan001be ] Salut a tousje débute en c#j'essaie de remplir un tableau 1 dimension en utilisant une boucle for!public int[] array1 = new int [10];


Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

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 : 1,342 sec (4)

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