解决方案 »

  1.   


    list = (from f in list orderby f.Guid descending, f.IsToday descending select f).ToList();
      

  2.   

    可以按多字段排序,你自己看着改吧
    这样的结果还是有问题呀。我不需要按照Guid排序。但是Guid相同的需要在一起。
    而这里按照Guid排序了之后,对我的按照InsertTime排序产生了影响。乱序了。就。
      

  3.   

    你自己说Guid相同的在一起的优先级高于InsertTime,不管对不对Guid排序,你要改变行的顺序,总是会影响InsertTime的次序
      

  4.   

    本帖最后由 bdmh 于 2014-05-14 14:57:52 编辑
      

  5.   

    Guid相同的,在一起,然后再按照InsertTime排序。
    这个需求是优点麻烦。但是人为还是可以排序的。很多Guid不同的也没有按照InsertTime排序啊。关键就是这点。
      

  6.   

    我觉得应该是分两步查询出来结合起来
    1:Guid相同的,在一起,然后再按照InsertTime排序。结果1
    2:剩下的Guid 按照 InsertTime 在排序得到的结果2
      

  7.   

    上图中。
    Guid。不一样。不需要在一起的时候,也没有按照InsertTime进行排序啊大神
      

  8.   


                var ary = (from t in list
                          orderby t.IsToday descending
                          group t by t.Guid into g 
                          select new { key = g.Key, source = g.OrderBy(tt => tt.InsertTime) }).ToList();            var ary2 = (from t1 in ary
                            from t2 in t1.source
                           select t2).ToList();试试
      

  9.   

    试了一下。如图;
    foreach ary2
      

  10.   


                var ary = (from t in list
                           orderby t.IsToday descending, t.InsertTime ascending
                          group t by t.Guid into g 
                          select new { key = g.Key, source = g.OrderBy(tt => tt.InsertTime) }).ToList();            var ary2 = (from t1 in ary
                            from t2 in t1.source
                           select t2).ToList();这样的数据没问题吧
      

  11.   

    上面是先按IsToday降序和InsertTime升序,然后按Guid分组,分组内部再按InsertTime排序得到分组结果
    下面是把分组结果解析回来的List
    还有我ary和ary2都没判空就直接ToList()了,你用的时候自己注意下是不是要判断
      

  12.   

    为何要做两次查询,用
    list = (from f in list
    orderby f.IsToday descending, f.InsertTime
    group f by f.Guid into g
    from m in g select m).ToList();这样不就好了?