2012-04-22 3 views
0

J'ai un constructeur avec 2 tableaux (double) membres:Trier un tableau C# basé sur un membre d'objet?

constructeur

[i] .x et constructeur [i] .y (où i est le nombre d'éléments)

Comment puis-je trier les x membre: constructeur []. x?

+3

S'il vous plaît coller le code réel (y compris toute tentative * * * ainsi que la raison * pourquoi ils ne fonctionnent pas). Il n'y a pas de "Constructeur" ici, sauf pour le nom. –

+0

Voir http://stackoverflow.com/questions/1301822/how-to-sort-an-array-of-object-by-a-specific-field-in-c Ce n'est pas un tri Array en place, mais il travaillera dans la plupart des cas. Ou consultez la documentation [Array.Sort] (http://msdn.microsoft.com/en-us/library/system.array.sort.aspx). –

+0

(Il serait intéressant de voir les réponses qui montrent l'utilisation de Array.Sort, peut-être en plus des approches LINQ Toutes les réponses que j'ai pu trouver sur SO dans ma brève recherche concernaient LINQ/IEnumerable et * not * spécifiquement un tableau. L'avantage, et la béquille, de Array.Sort est qu'il est en train de muter.) –

Répondre

1

Avec LINQ, il est juste

constructor = constructor.OrderBy(a => a.x).ToArray(); 

Sans LINQ

class CustomClass 
{ 
    public double x; 
    public double y; 
} 

public class CustomComparer : IComparer<CustomClass> 
{ 
    private CustomComparer() { } 

    public static CustomComparer Instance { get { return _SingeltonInstance; } } 

    private static CustomComparer _SingeltonInstance = new CustomComparer(); 

    public int Compare(CustomClass a, CustomClass b) 
    { 
     return a.x.CompareTo(b.x); 
    } 
} 

public class myCode 
{ 
    public void SomeFuction(CustomClass[] myClass) 
    { 
     //myClass is unsorted here; 
     Array.Sort(myClass, CustomComparer.Instance); 
     //myClass is sorted here; 
    } 
} 
+1

Ce n'est pas LINQ. LINQ (IEnumerable) utilise OrderBy. Il existe cependant ['static Array.Sort'] (http://msdn.microsoft.com/en-us/library/system.array.sort.aspx) et [' List.Sort'] (http://msdn.microsoft.com/en-us/library/3da4abas.aspx). –

+0

@pst cela a été tapé à partir de la mémoire de mon téléphone. Corrigée. –

+0

Juste vous garder sur vos orteils ;-) –

Questions connexes