Linq to sql LINQ:在3路连接中统计用户数

Linq to sql LINQ:在3路连接中统计用户数,linq-to-sql,count,Linq To Sql,Count,我在LINQtoSQL方面遇到了问题,我认为这应该不会太难。 在SQL中,我有一个BusinessUnits,它被划分为OrgUnits,用户属于一个OrgUnit。 我想打印BusinessUnitID,其中包含每个页面中的用户数 在SQL中,它可能如下所示: SELECT BusinessUnitID, Count(u.UserID) FROM BusinessUnitsOrgUnits bu INNER JOIN OrgUnits org on bu.OrgUnitID= org

我在LINQtoSQL方面遇到了问题,我认为这应该不会太难。 在SQL中,我有一个BusinessUnits,它被划分为OrgUnits,用户属于一个OrgUnit。 我想打印BusinessUnitID,其中包含每个页面中的用户数

在SQL中,它可能如下所示:

SELECT BusinessUnitID, Count(u.UserID)
FROM BusinessUnitsOrgUnits bu
     INNER JOIN OrgUnits org on bu.OrgUnitID= org.OrgUnitID
     INNER JOIN Users u on org.OrgUnitID = u.OrgUnitID
GROUP BY BusinessUnitID
但在林克,我得到了这个,但很难得到正确的计数

 var UsersPerBU = from bu in BusinessUnitsOrgUnits 
                  join org in OrgUnits on bu.OrgUnitID equals org.OrgUnitID
                  join u in Users on org.OrgUnitID equals u.OrgUnitID
                  group bu by bu.BusinessUnitID into g
                  select new
                   {
                        BusinessUnitID = g.Key,
                        UserCount = Users.Count (us => us.OrgUnit.OrgUnitID == bu.OrgUnitID) 
                         //here it complains that bu does not exist.
                   };
也许这个

            var UsersPerBU = (from bu in BusinessUnitsOrgUnits
                              join org in OrgUnits on bu.OrgUnitID equals org.OrgUnitID
                              join u in Users on org.OrgUnitID equals u.OrgUnitID
                              group bu by bu.BusinessUnitID into g
                              select new { bu = g})
                             .Select(x =>
                                 new
                                 {

                                     BusinessUnitID = x,
                                     UserCount = x.bu.Select(y  => y.OrgUnitID).Distinct().Count()
                                     //here it complains that bu does not exist
                                 }
                            );

我想你可能是对的。看起来很有效。这么简单。如果你把评论汇编成一个答案,我会接受的。
            var UsersPerBU = (from bu in BusinessUnitsOrgUnits
                              join org in OrgUnits on bu.OrgUnitID equals org.OrgUnitID
                              join u in Users on org.OrgUnitID equals u.OrgUnitID
                              group bu by bu.BusinessUnitID into g
                              select new { bu = g})
                             .Select(x =>
                                 new
                                 {

                                     BusinessUnitID = x,
                                     UserCount = x.bu.Select(y  => y.OrgUnitID).Distinct().Count()
                                     //here it complains that bu does not exist
                                 }
                            );