外连接两个匿名类型并引用连接查询中的单个属性?

时间:2011-11-02 14:58:41

标签: c# linq

假设:

var memberships = context.Memberships.OrderBy("it.CreateDate").ToList();

            var monthlyCounts = from m in memberships
                                     where m.CreateDate >= today.AddDays(-365) && m.CreateDate <= today
                                     group m by m.CreateDate.Month
                                         into g
                                         select new
                                         {
                                             MemberCount = g.Count(m => m.UserId != null),
                                             MembershipDate = g.Key,
                                         };

我正试图加入一个月份列表:

 var months = Enumerable.Range(0, (d1.Year - d0.Year) * 12 + (d1.Month - d0.Month + 1))
                .Select(m => new DateTime(d0.Year, d0.Month, 1).AddMonths(m).Month);

这就是我提出的:

var cumlativeCounts = from d in months
                                  join m in monthlyCounts on d equals m.MembershipDate into ms
                                  from m in ms.DefaultIfEmpty()
                                  select new
                                             {
                                                 Month = d,
                                                 Count = m.MemberCount
                                             };

问题是我得到'对象引用没有设置为对象的实例'异常,大概是在m.MemberCount上

当我只使用Count = m然后我从monthlyCounts匿名类型中获取所有属性,这不是我想要的。

是否有另一种方法可以外连接两个匿名类型并引用连接查询中的单个属性?

提前致谢。

1 个答案:

答案 0 :(得分:1)

你可以写

m == null ? 0 : m.MemberCount