LINQ sum和groupby并返回空记录?

时间:2014-03-28 14:36:43

标签: linq

您好我在下面有一个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();
            }

我该怎么做?

由于

1 个答案:

答案 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()