2011-07-05 45 views

回答

11

還有另一個重要的和極其簡單的方式,除非你絕對需要你就地排序:使用LINQ到對象。例如:

var orderedByName = cars.OrderBy(car => car.Name).ToList(); 

您可以通過多個投影訂購,並在各種不同的方式,像這樣:

var complex = cars.OrderByDescending(car => car.Year) 
        .ThenBy(car => car.Model) 
        .ThenByDescending(car => car.Make) 
        .ToList(); 

我只有把ToList在年底末創建List<Car> - 如果你只需要遍歷結果,雖然,你可以讓它執行懶洋洋的順序:

var query = cars.OrderByDescending(car => car.Year) 
        .ThenBy(car => car.Model) 
        .ThenByDescending(car => car.Make); 

foreach (var car in cars) 
{ 
    // Use car 
} 

個人而言,我發現這個排序的最靈活的方式。否則,使用IComparer<T>Comparison<T>是下一個最靈活的,因爲任何人都可以這樣排序。 IComparable<T>要求班級本身決定如何訂購物品,而且您只能實施一次,這會使其變得不靈活。

IEquatable<T>用於爲平等比較項目,因此使用的東西像HashSet<T>,而不用於排序。

+0

謝謝你的建議,這解決了我的理解。 – Pingpong

+0

@約翰,這是主題。我深入閱讀了兩本書的版本,c#。除了你的書籍,你還會推薦c#專家的c#書籍。如何在Google申請軟件工程師? – Pingpong

+0

@Pingpong:實際* C#*語言書籍?規範,理想情況下...如果你已經深入瞭解C#,沒有任何我知道的書會進入更多語言細節。 CLR通過C#和C#4在Nutshell中進入了許多*其他*前沿的深度,介意你。至於申請谷歌 - ping我的簡歷在[email protected]。 –

相關問題