日期:2014-05-20  浏览次数:20898 次

跪求linq语句,大神在哪里?
已知一个树形泛型集合和一个实体类
public class  Group
{
    /// <summary>
    /// 编号
    /// </summary>
    public string ID {get;set;}
    /// <summary>
    /// 父级编号
    /// </summary>
    public string ParentID{get;set;}
    /// <summary>
    /// 等级
    /// </summary>
    public int Levels{get;set;}
    /// <summary>
    /// 次数
    /// </summary>
    public int Num{get;set;}
    /// <summary>
    /// 排名 
    /// </summary>
    public int No{get;set;}
}

  List<Group> list = new List<Group>();
  list.Add(new Group { Id = "01", ParentID = "-1", Levels = "-1",Num=21 });
  list.Add(new Group { Id = "02", ParentID = "01", Levels = "1",Num=5 });
  list.Add(new Group { Id = "04", ParentID = "02", Levels = "2",Num=1 });
  list.Add(new Group { Id = "05", ParentID = "02", Levels = "2",Num=4 });                
  list.Add(new Group { Id = "03", ParentID = "01",  Levels = "1",Num=16 });
  list.Add(new Group { Id = "06", ParentID = "03",  Levels = "2",Num=10 });
  list.Add(new Group { Id = "07", ParentID = "03",  Levels = "2",Num=3 });
  list.Add(new Group { Id = "08", ParentID = "03",  Levels = "2",Num=3 });



问题:根据等级和次数排名,同等级同次数排名相同
      {linq 语句}

结果:保持树形结果不变
No   ID    ParentID   Levels   Num  
1    01        -1        -1     21
1    03        01         1     16
1    06        03         2     10
3    07        03         2     3
3    08        03         2     3
2    02        01         1     5
2    05        02         2     4
4    04        02         2     1


------解决方案--------------------
你这结果哪里是按等级先排序啊,分吗是乱的
 Levels   应该是整形
List<Group> arr = list.OrderBy(x => x.Levels).ThenBy(y => y.Num).ToList();
------解决方案--------------------
排序如1楼
我设计的话ParentID后就不会有Levels
------解决方案--------------------
那你直接用TreeView或者TreeListView。查出某个节点下的数据,排序后再按顺序加载上去,用不着一次全部排序。
------解决方案--------------------
这样的设计太蛋疼,这样的排序更蛋疼

或许这个可以帮到你:  http://blog.csdn.net/q107770540/article/details/7708418