2012-02-09 117 views
1

如何获得特定组中元素的数量?因此,在下面的查询中,我想知道每个帐户有多少个已取消和有效的订阅。我得到的是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 } 

回答

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");

+0

我希望它每个帐户汇总。 – 2012-02-10 19:44:33

相关问题