LINQ - 加入2个表,按DateTime.Month分组,多个计数

时间:2016-03-17 08:19:48

标签: c# linq

我对C#和LINQ很陌生,我正在尝试获取一系列电子邮件,其中包含电子邮件,附件和用户(发送电子邮件的人)的总和。

所以我当前的问题是我的查询输出是错误的。电子邮件的数量等于明显错误的附件数量。 我的查询:

var monthQuery = from em in dbEdoka.email
                          join ema in dbEdoka.email_attachment on em.id equals ema.email_id into e
                          from e2 in e.DefaultIfEmpty()
                          group e2 by em.erstellt_am.Month into grouped
                          select new Entities.Month
                          {
                              NameOfMonth = grouped.FirstOrDefault().erstellt_am.ToString(),
                              NumberOfMails = grouped.Distinct().Count(m => m.email_id != null).ToString(),
                              NumberOfAttachments = grouped.Count(a => a.id != null).ToString(),
                              NumberOfUsers = grouped.Select(u => u.erstellt_von).Distinct().Count().ToString()
                          };


        months = monthQuery.ToList();
        Months = CollectionViewSource.GetDefaultView(months);

正如您所看到的,我必须从 dbEdoka.email_attachment 中取 m.email_id 而不是 m.id 来自 dbEdoka。电子邮件因为它不可用(不知道为什么......)。 但我必须计算“NumberOfMails”,“NumberOfAttachments”和“NumberOfUsers”。

谢谢!

0 个答案:

没有答案