2012-04-22 6 views
0

У меня есть конструктор с 2-х участников (двойные) массивы:Сортировка массива C# на основе члена объекта?

конструктор [я] .x и конструктор [я] .y (где я есть число элементов)

Как можно отсортировать х member: constructor []. x?

+3

Пожалуйста вставьте реальный код (включая любые * попыток * вместе с * почему * почему они не работают). Здесь нет «конструктора», кроме имени. –

+0

См. Http://stackoverflow.com/questions/1301822/how-to-sort-an-array-of-object-by-a-specific-field-in-c. Это не сортировка Array на месте, но она Я буду работать в большинстве случаев. Также см. Документацию [Array.Sort] (http://msdn.microsoft.com/en-us/library/system.array.sort.aspx). –

+0

(Было бы интересно увидеть ответы, которые показывают использование Array.Sort, возможно, в дополнение к подходам LINQ. Все ответы, которые я смог найти на SO в моем кратком поиске, были связаны с LINQ/IEnumerable и * not *, а именно с массивом. Преимущество и костыль Array.Sort в том, что он мутирует.) –

ответ

1

С помощью LINQ это просто

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

Без 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

Это не LINQ. LINQ (IEnumerable) использует OrderBy. Однако существует ['static Array.Sort'] (http://msdn.microsoft.com/en-us/library/system.array.sort.aspx) и [' List.Sort'] (http://msdn.microsoft.com/en-us/library/3da4abas.aspx). –

+0

@pst это было напечатано из памяти с моего телефона. Исправленный. –

+0

Просто держу вас на носках ;-) –

Смежные вопросы