how to use entity framework to group by date not date with time
Here is an easier way to do it for later Entity Framework versions.
var query = Data
.GroupBy(o => new { EventDate = o.EventDate.Date })
.Select(s => new SalesData()
{
EventDate = s.Key.EventDate,
Amount = s.Sum(o => o.Amount),
Qty = s.Sum(o => o.Qty),
RefundAmount = s.Sum(o => o.RefundAmount),
RefundQty = s.Sum(o => o.RefundQty),
})
.OrderBy(o => o.EventDate)
.ToList();
return query;
Use EntityFunctions.TruncateTime
Method (Nullable<DateTime>
). It will be transalated into TRUNCATETIME()
TSQL function in generated SQL query, which does what you need:
Returns the expression, with the time values truncated.
So your code should be as follows:
//get data
var myData = from log in db.OperationLogs
group log by EntityFunctions.TruncateTime(log.CreateTime) into g
orderby g.Key
select new { CreateTime = g.Key, Count = g.Count() };