2011-05-30 37 views
1

在我的節目,我有這樣一個類:排序在C#中的類的數組

Class Customer{ 

    double Start; 
    double Finish; 
    double Wait; 
} 

,我創建了這個類的一個數組:

Customer[] customer = new Customer[300]; 

我如何解決這數組按起始值降序還是升序?

謝謝...

+1

您可能要指定是否LINQ是一個選項或沒有。 – 2011-05-30 11:03:20

回答

10

你可以使用Array.Sort方法數組排序就地:

Array.Sort(customer, (x, y) => x.Start.CompareTo(y.Start)); 

或降序排列

Array.Sort(customer, (x, y) => y.Start.CompareTo(x.Start)); 
1

你需要使用的IComparer和您需要在您的課程中實施icomparer後編寫自定義代碼

8

如果希望使用CustomerList,但是你可以應用陣列上相同的功能:

List<Customer> customerList = new List<Customer>; 
var orderedCustomerList = customerList.OrderBy(item => item.Start); 

參考:

Enumerable.OrderBy Method

Enumerable.OrderByDescending Method

+2

'OrderBy'可用於實現'IEnumerable '的任何事物,包括一個普通數組。不過,我從我的+1 – 2011-05-30 11:06:05

+0

@Isak Savo:謝謝,我已經更新了我的答案以適合您的評論。 – 2011-05-30 11:10:57

4

按升序由Start

var sortedCustomers = customer.OrderBy(c => c.Start); 

和降序的Start

var sortedCustomers = customer.OrderByDescending(c => c.Start);