我试图在不同设备上获取我的应用程序过去 30 天的总下载次数,我成功地返回了正确的查询,方法是按天数分组并与过去 30 天的可枚举连接。但是我无法根据需要格式化输出。让我先用 LinqPad 中的演示文稿分享查询
var last_days = (from idx in Enumerable.Range(1, (DateTime.Now - DateTime.Now.AddDays(-30)).Days)
select new { day = DateTime.Now.AddDays(-30).AddDays(idx).Date});
var orders = (from od in Orders
group od by EntityFunctions.AddSeconds((DateTime?)new DateTime(1970,1,1,0,0,0,0), (int?)od.Created) into g
select new {
day = g.Key ,
web = g.Where( q => q.Source == "web").Count(),
ios = g.Where( q => q.Source == "ios").Count(),
android = g.Where( q => q.Source == "android").Count(),
total = g.Count()
}).OrderByDescending(q => q.day).Take(31);
var days=
(from d in last_days
join od in orders on d.day equals od.day into x
from od in x.DefaultIfEmpty()
select x );
days.Dump();
这是我得到的结果
现在,我想将最终输出格式化为 5 列(day、web、ios、android、total)的 IEnumerable,无论它是否为空。因此,我得到的不是空的 O 符号,而是日期和 web = ios = android = total = 0。我该怎么做?所以在没有任何下载的日子里,我仍然得到一个日期和平台为 0 的条目。