.Net Sorting Multiple properties in List of Object – .Net 上List of Object 以多項屬性進行排序

最近有朋友問了一個很好的問題..
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;

Sort() cannot solve .Net Sorting Multiple properties in List of Object

我比較喜歡使用LINQ..感覺得方便..
LINQ 可以很方便地解決這個問題

解決方法:
我們可以使用List.OrderByThenBy 來解決這個問題
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

.Net Sorting Multiple properties in List of Object  work with LINQ
Hope you find it useful

Leave a Reply