我指望每天創建的用戶數如下:組和計數。簡化代碼
IEnumerable<DateTime> dates = GetAllDatesForPeriod();
var rows = context.Users
.Where(x => x.Created >= minDate && x.Created <= max.Date)
.GroupBy(x => new { Year = x.Created.Year, Month = x.Created.Month, Day = x.Created.Day })
.Select(x => new { Year = x.Key.Year, Month = x.Key.Month, Day = x.Key.Day, Count = x.Count() }).ToList()
.Select(x => new DataModel { Date = new DateTime(x.Year, x.Month, x.Day), Users = x.Count }).ToList();
rows.AddRange(dates.Where(x => !rows.Any(y => y.Date == x)).Select(x => new DataModel { Date = x, Users = 0 }));
第二個選擇是因爲我不能創建在Ef中查詢日期時間。
的的AddRange是具有計數= 0
此代碼工作以填充缺少的日期。但是有沒有辦法簡化這個?
謝謝你, 米格爾
這是EdmFunctions中的一些DateTime相關函數(http://msdn.microsoft.com/en-us/library/dd486743.aspx) - 你試過這些嗎?你可以在Linq查詢中使用它們 - 這裏是一個例子:http://stackoverflow.com/questions/12673792/datetime-adddays-entityframework – Pawel
你好,是的,我試過了......但是我沒有能夠集結它工作。有時會有點混亂。在這種情況下,我真正想避免的是使用兩個選擇。一步不可能做到最後一個選擇和添加範圍的功能是什麼? –