如何使用linq orderby和group by

时间:2015-02-03 17:52:23

标签: c# linq

我在下面有一个查询,我想订购t.day。我是linq的新手。我在下面的查询中将orderby t.day放在哪里?感谢。

        var pracResult = (from t in queryResult
                            group t by new {t.RouteNbr, t.Day,t.NumberOfActionPlans,t.RouteNbrPlusDay}
                            into grp                                     
                            select new
                            {
                                grp.Key.RouteNbr,
                                grp.Key.Day,
                                grp.Key.NumberOfActionPlans,
                                grp.Key.RouteNbrPlusDay,
                            }).ToList();


        //orderby t.Day

3 个答案:

答案 0 :(得分:1)

我不明白为什么你再次将你的群组转换为他们的密钥。如果您打算订购论坛,可以使用,

var pracResult = (from t in queryResult
                        group t by new {t.RouteNbr,  t.Day,t.NumberOfActionPlans,t.RouteNbrPlusDay}
                        into grp 
                        orderby grp.Key.Day                                    
                        ).ToList();

否则,如果您想要完全等同于您的代码,为什么不这样做,

var pracResult = queryResult.Select(i => new {i.RouteNbr, i.Day, i.NumberOfActionPlans, i.RouteNbrPlusDay})
                        .Distinct() 
                        .OrderBy(k => k.Day)
                        .ToList();

答案 1 :(得分:0)

您可以添加

orderby krp.Key.Day

在小组条款之后。

答案 2 :(得分:0)

试试这个:

 var pracResult = queryResult.GroupBy(t => new {t.RouteNbr, t.Day,t.NumberOfActionPlans,t.RouteNbrPlusDay})
                             .OrderBy(l => l.Key.Day)
                             .Select(grp =>new{ grp.Key.RouteNbr,
                                                 grp.Key.Day,
                                                 grp.Key.NumberOfActionPlans,
                                                 grp.Key.RouteNbrPlusDay}).ToList();