如何计算每组中的元素数量?

时间:2012-02-09 18:25:09

标签: linq

如何获取特定组中元素的计数?因此,在下面的查询中,我想知道每个帐户有多少已取消和有效订阅。我得到的是0或1,具体取决于他们是否至少有一个已取消或有效的订阅。

from a in Accounts
let subs = (
        from s in Subscriptions.Where(s=>s.AccountId == a.Id) 
        group s by s.Status into bystatus 
        select bystatus
    )
let csubs = subs.Count (s =>s.Key == "Cancelled")
let asubs = subs.Count (s => s.Key == "Active")
orderby a.Name
select new { a.Name,a.AccountNumber, a.Status, ActiveSubscriptionCount = asubs, CancelledSubscriptionCount = csubs  }

1 个答案:

答案 0 :(得分:0)

您似乎正在汇总数据每个帐户。这是你的意图吗?如果您想要所有帐户中的汇总数据,您可以执行...

var data = // your above code
int activeSubs = data.Sum(x => x.ActiveSubscriptionCount);
int cancelledSubs = data.Sum(x => x.CancelledSubscriptionCount);

......或......

var data = Subscriptions.GroupBy(s => s.Status);
var activeSubs = data.Count(s => s.Key == "Active");
var cancelledSubs = data.Count(s => s.Key == "Cancelled");

相关问题