新手请问一个Linq先分组再排序的有关问题

新手请教一个Linq先分组再排序的问题
我有一个集合IList<RawWeeklyAccounts>:
    public class RawWeeklyAccounts
    {
        public long TotalAccounts { get; set; }
        public int weeknumber { get; set; }
        public string MsuName { get; set; }
    }

我想先按照MsuName分组,对每个分组按照WeekNumber排序,最后返回一个新的Entity:
WeeklyAccounts
{
    public int Weeknumber;
    public long TotalAccounts; //即原表的WeeklyAccounts。
}

请问LINQ应该怎么写呢?
------解决思路----------------------
List<RawWeeklyAccounts> list;

 var q=from r in list.GroupBy(x=>x.MsuName)
       order r by r.weeknumber 
       select new WeeklyAccounts
       {
          Weeknumber=r.weeknumber,
          TotalAccounts=r.TotalAccounts 
       };

------解决思路----------------------
var query = from p in tbs
                    order by p.weeknumber 
                   group p  by p.weeknumber into g
                   select g;


先排再分组不是一样的效果么...
------解决思路----------------------
引用:
另外如果不使用LINQ语法,使用集合的函数语法(OrderBy(),Where()),应该怎么写呢?这两种写法有什么不同和优缺点呢?谢谢


函数写法跟类SQL的写法,都是Linq机制。不是说只有SQL写法才是Linq。

函数写法主要可以用在非常简单的计算表达上。对于稍微复杂一点的Linq计算公式,它显得不够清晰,不易于书写和维护。
------解决思路----------------------
它的函数式连缀写法是这样的:
var result = datasource
            .GroupBy(x => x.MsuName)
            .Select(g => new
            {
                MsuName = g.Key,
                Accounts = g.OrderBy(y => y.weeknumber)
            });