2015-10-29 37 views
0

我有一個菜單,它是Heirarchical例如排序IHierarchicalEnumerable列表c#

菜單父 - 子項A - 子項B 菜單父乙 - 子項A 菜單父Ç 菜單父d

它從db和與驅動每個MenuParent我有一個.Order int我想訂購父項目。

我的代碼如下;

 List<Menu> result = (List<MenuModel>)deserializer.ReadObject(stream); 
     var groupNames = result.Select(e => new Tuple<string,string,int>(e.menutitle, e.imageurl, e.ordernumber)).Distinct().ToList(); 

     int increment = 1; 
     List<Category> lstc = new List<Category>(); 
     foreach (var item in groupNames) 
     { 
      _collection.Add(new Category(incrementforId, "0", item.Item1, item.Item2, item.Item3)); 
      List<string> lstItemTitle = result.Where(e => e.GroupTitle.Trim() == item.Item1).Select(x => x.ItemTitle.Trim()).Distinct().ToList(); 
      List<Category> lstclocal = (from ItemTitle in lstItemTitle select new Category(ItemTitle + increment, increment.ToString(), ItemTitle)).ToList(); 
      incrementforId++; 
      lstc.AddRange(lstclocal); 
     } 

//ISSUE IS HERE 
     _collection.GroupBy(x => x.Order);     
     _collection.AddRange(lstc); 

其中;

public class CategoryCollection : List<Category>, IHierarchicalEnumerable { 

但是,我似乎無法順序由x.Order元素?我試過

var _collection = _collection.GroupBy(x => x.Order); 

這是給出的錯誤;

無法隱式轉換類型 'System.Collections.Generic.IEnumerable>' 爲 'CategoryCollection'。一個明確的轉換存在(你是 失蹤演員?)

我也試過.OrderBy哪個失敗呢?

任何想法如何解決這個問題?

+0

什麼是'_collection'場的** **類型? –

+0

@IvanStoev對不起,應該有這個。我已經更新了這個問題來反映這一點。 –

+1

這就是爲什麼你會收到錯誤。 'GroupBy'絕對不會返回'CategoryCollection'。但讓我們看看你想達到什麼。你想在'lcolcl''中添加剩下的'_collection'(你已經添加到上面的'foreach'循環中了)中的項嗎? –

回答

1

如果我理解正確的,你需要的是更換該

//ISSUE IS HERE 
_collection.GroupBy(x => x.Order); 

_collection.Sort((x, y) => x.Order.CompareTo(y.Order));