最近有朋友問了一個很好的問題..
在List Of Object 上 用多過一個的屬性來排序?
//建立一個ShareChiWai_Model - 用來取一些Sample的List Data ShareChiWai_Model Share_Model = new ShareChiWai_Model(); //這個例子我們使用Get_Food_List() 的資料..因為有很多屬性可以用來示範 List<Food> FoodList = Share_Model.Get_Food_List(); //我們可以用FoodList.sort() 這個功能來做 Sorting 可惜只可以 以一個屬性來排序 FoodList.Sort(delegate(Food f1, Food f2) { return f1.Price.CompareTo(f2.Price); }); //再次使用 的時候只會以 最後排序的屬性來排序 FoodList.Sort(delegate(Food f1, Food f2) { return f1.Price.CompareTo(f2.Price); }); dgv_Data.DataSource = FoodList;
我比較喜歡使用LINQ..感覺得方便..
用LINQ 可以很方便地解決這個問題
解決方法:
我們可以使用List.OrderBy 和 ThenBy 來解決這個問題
E.G.
//下面的例子我用了Order By Decending Order因為這樣子會容易一點看到效果 FoodList = FoodList.OrderByDescending(f => f.Price).ThenBy(f => f.Food_Name).ToList(); //由於 OrderBy/OrderByDescending/ThenBy/ThenByDescending IOrderedEnumerable<TSource> 的關係..所以我們要用ToList()來把他轉回做 List
Hope you find it useful