2
我有一個用戶定義的類對象的集合,例如,汽車實例,排序它的最佳方法是什麼?如何在.net中對用戶定義的類進行排序,c#
下面是可能的方式,哪一個最好,還有其他方法嗎?
- IComparable的
- 的Comparer
- 比較
- IEquatable
任何想法將是非常讚賞
我有一個用戶定義的類對象的集合,例如,汽車實例,排序它的最佳方法是什麼?如何在.net中對用戶定義的類進行排序,c#
下面是可能的方式,哪一個最好,還有其他方法嗎?
任何想法將是非常讚賞
還有另一個重要的和極其簡單的方式,除非你絕對需要你就地排序:使用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>
,而不用於排序。
謝謝你的建議,這解決了我的理解。 – Pingpong
@約翰,這是主題。我深入閱讀了兩本書的版本,c#。除了你的書籍,你還會推薦c#專家的c#書籍。如何在Google申請軟件工程師? – Pingpong
@Pingpong:實際* C#*語言書籍?規範,理想情況下...如果你已經深入瞭解C#,沒有任何我知道的書會進入更多語言細節。 CLR通過C#和C#4在Nutshell中進入了許多*其他*前沿的深度,介意你。至於申請谷歌 - ping我的簡歷在[email protected]。 –