LINQ orderby和group

时间:2014-10-04 19:18:00

标签: c# linq

考虑以下代码

var res = from d in CalEntries
    group d by d.date.ToString("MMMM") into grp
    orderby grp.Key 
    select grp;

我在CalEntries中有一个对象列表,其中一个成员属性为date类型DateTime。目前,此代码返回按月份名称分组的所有日期,但组的顺序是字母顺序,因此11月将出现在10月之前。 如何修改此查询以保留月份名称的分组,但是根据月份的时间顺序对组进行排序?

2 个答案:

答案 0 :(得分:2)

如果您根本不关心月份名称,那么按月份名称进行分组是非常倒退的。而是直接按月份编号分组并按其排序。如果您的数据的原生格式更合适,请不要使用字符串进行计算。

group x by x.Month into g
orderby g.Key
select new { MonthName = g.Key.ToString("MMMM"), Items = g.ToList() }

答案 1 :(得分:0)

你可以尝试:

orderby d.date.ToString("MM") ascending