LINQ group by datetime and sum



我有一个在特定日期购买的订单列表。我需要将它们全部分为一个日期(在同一天进行的购买),然后总结一下。.我做了一个看起来像这样的课程:

 public class StoreAnalyticOrders
    {
        public DateTime OrderDate { get; set; }
        public float AmountPaid { get; set; }
    }

然后i填写列表,该列表称为"图形列表",带有结果...

我试图执行我刚刚描述的内容的LINQ是:

  var result = GraphList
      .GroupBy(l => l.OrderDate)
      .Select(cl => new StoreAnalyticOrders
      {
          AmountPaid = cl.Sum(c => c.AmountPaid),
      }).ToList();

,但由于某种原因,日期的格式不好(它们丢失了),它们像这样出现:

1/1/0001 12:00:00 AM

这是订单日期属性的先前格式:

11/21/2016 6:05:32 AM

我在这里做错了什么?

编辑:@ivan stoev是您的想法:

  var result = GraphList
                    .GroupBy(l => l.OrderDate.Date)
                     .Select(cl => new StoreAnalyticOrders
                     {
                         OrderDate = cl.Key,
                         AmountPaid = cl.Sum(c => c.AmountPaid)
                     }).ToList();

您无法使用LINQ中的DateTime对实体查询进行更改,您应该使用DbFunctions

GraphList.GroupBy(gl => DbFunctions.TruncateTime((DateTime)gl.Datetime)).
Select(gl=> new{
    Date = DbFunctions.TruncateTime((DateTime)gl.FirstOrDefault().Datetime),
    TotalAmountPaid = gl.Sum(x=> x.AmountPaid)
}).ToList();

最新更新