0

Linq は私にとってまったく新しいものなので、これが本当にばかげている場合は申し訳ありません。

グループ化せずに、where 句を使用して複数テーブルの結合からカウントを取得しようとしています。group by の例を見てきましたが、必要に応じてそれに頼りますが、それを回避する方法があるかどうか疑問に思っています。Is sql 私のクエリは次のようになります。

 SELECT Count(*)
FROM   plans p
       JOIN organizations o
         ON p.org_id = o.org_id
            AND o.deleted IS NULL
       JOIN orgdata od
         ON od.org_id = o.org_id
            AND od.active = 1
       JOIN orgsys os
         ON os.sys_id = od.sys_id
            AND os.deleted IS NULL
WHERE  p.deleted IS NULL
       AND os.name NOT IN ( 'xxxx', 'yyyy', 'zzzz' ) 

これを取得する最良の方法は何ですか?

4

1 に答える 1

1

必要なのは電話するだけですCount()結果の数だけを数えています。次のようなものです:

var names = new[] { "xxxx", "yyyy", "zzzz" };
var query = from plan in db.Plans
            where plan.Deleted == null
            join organization in db.Organizations
              on plan.OrganizationId equals organization.OrganizationId
            where organization.Deleted == null
            join orgData in db.OrganizationData
              on organization.OrganizationId equals orgData.OrganizationId
            where orgData.Active == 1
            join os on db.OrganizationSystems
              on orgData.SystemId equals os.SystemId
            where os.Deleted == null &&
                  !names.Contains(os.Name)
            select 1; // It doesn't matter what you select here
 var count = query.Count();
于 2013-03-29T10:54:03.190 に答える