您好我在下面有一个linq查询按月分组购买和该月的总和。查询有效,但是当某个月没有购买时,我希望它在该月返回0。在那一刻,它只是滑过那个月。例如,如果仅在六个月内购买,则linq查询仅返回我想要返回12的6条记录,其中6将等于0。
var purchaseData = (from p in db.Purchases
where p.UserId == WebSecurity.CurrentUserId
group p by new {p.DateBought.Value.Month} into g
select new {g.Key.Month, Sum = g.Sum(p => p.Price)}).ToArray();
string[] myArray = new string[12];
for (int i = 0; i < purchaseData.Length; i++)
{
myArray[i] = purchaseData[i].Sum.ToString();
}
我该怎么做?
由于
答案 0 :(得分:0)
创建你的月份
var months = Enumerable.Range(1,12);
左加入您的purchaseData,您可以直接将结果放入数组
string[] myArray = (from month in months
from p in purchaseData.Where(x => month == x.Month).DefaultIfEmpty()
select p == null ? "0" : p.Sum.ToString()).ToArray()