首先,您需要根据需要分组的日期属性 (这里是基于DateTime) 创建一个新的类或结构体,以便为每个时间戳存储月份值。
接下来,从原始数据源中检索项,并根据每个时间戳创建新实例。
例如,在以下示例中,我们正在从数据库中检索一个名为“Orders”的表,并在其中创建了一个基于 DateTime 的新类:
public class MonthGroupedResult
{
public DateTime Date { get; set; }
public int Month { get { return Date.Month; } }
public int Year { get { return Date.Year; } }
public decimal Total { get; set; }
}
public List GetOrdersGroupedByMonth()
{
var orders = db.Orders.ToList();
var groupedByMonth = orders.Select(o => new MonthGroupedResult
{
Date = o.OrderDate,
Total = o.TotalPrice
})
.GroupBy(m => new { m.Year, m.Month })
.Select(g => new MonthGroupedResult
{
Date = new DateTime(g.Key.Year, g.Key.Month, 1),
Total = g.Sum(x => x.Total)
})
.ToList();
return groupedByMonth;
}
在上面的示例中,我们首先定义了要重新分组的新类 MonthGroupedResult,它包括了日期、月份和总额。然后我们查询了订单表并根据每个订单的OrderDate属性创建新实例。接下来,我们按月份和年份分组并计算每个月份的总价。最后,我们选择每个月份的第一天作为新日期,并返回新的分组列表。
这样,您就可以根据每个月的时间戳来获取分组结果。
上一篇:按照簇生成的分组方式