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