2012-02-09 11 views
1

特定のグループ内の要素の数を取得するにはどうすればよいですか?下のクエリでは、アカウントごとにキャンセルされたアクティブなサブスクリプションの数を知りたいと思っています。私が得ているのは、少なくとも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 = Subscriptions.GroupBy(s => s.Status);
var activeSubs = data.Count(s => s.Key == "Active");
var cancelledSubs = data.Count(s => s.Key == "Cancelled");

+0

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

...またはを行うことができます。 –

関連する問題