2015-10-29 35 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));