2016-08-14 52 views
0

我有這樣排序列表<>排序依據列表<string>計數

List<Category> list = Category.getCategoryList(); 

在Category類我有public List<string> subCat { get; set; }列表,某些類別具有SUBCAT,有些沒有,我想訂購由SUBCAT我的列表。帶有subCat的類別排在第一位。 我知道,這將catName

List<Category> SortedList = list.OrderBy(o => o.catName).ToList(); 

排序我如何排序SUBCAT那裏是在列表中SUBCAT。 任何幫助將被appricaited。

回答

1

您可以通過子類別的數量排序,所以你必須先與更多的孩子類別:

var sorted = list.OrderByDescending(o => o.subCat != null ? o.subCat.Count : 0).ToList(); 

如果要通過類別名稱和訂購首先展示你可以使用ThenBy子類別的類別:

var sorted = list 
       .OrderBy(o => o.subCat != null && o.subCat.Count > 0 ? 0 : 1) 
       .ThenBy(o => o.catName) 
       .ToList(); 
1

如果要通過子類的存在排序使用的排序謂詞Any方法:

//will order by the boolean value - due to the descending first the "true" and then "false" 
var result = OrderByDescending(item => item.SubCat.Any()); 

如果你想和類別的數量訂購:

var result = OrderByDescending(item => item.SubCat.Count()); 

對於排序由幾個屬性使用ThenBy