LINQ查询带有两个COUNT,基于Where语句中的不同参数

时间:2012-08-22 19:38:11

标签: .net linq linq-to-sql

有没有办法让一个LINQ查询根据不同的计数条件包含两个不同的计数?例如,假设我想查询“收件箱”以获取存在的邮件总数的计数,以及每个收件箱中未读的所有邮件的另一个计数。

所以这是我正在寻找的结果......
NAME未读TOTAL
gbush 10 20
bobama 30 100

这可以在一个查询中完成,还是需要两个查询?

以下是我必须计算的未读物品数量,但我在哪里/如何获得总物品?

var results = from message in context.inbox
              where message.Status = "UNREAD"
              group message by message.Name into g
              select new { Name = g.Key, Unread = g.Count() };

1 个答案:

答案 0 :(得分:3)

您可以使用接受谓词的Count重载:

var results = from message in context.inbox
              group message by message.Name into g
              select new 
              { 
                  Name = g.Key, 
                  Unread = g.Count(m => m.Status == "UNREAD"),
                  Total = g.Count()
              };