Linq to sql LINQ:在3路连接中统计用户数
我在LINQtoSQL方面遇到了问题,我认为这应该不会太难。 在SQL中,我有一个BusinessUnits,它被划分为OrgUnits,用户属于一个OrgUnit。 我想打印BusinessUnitID,其中包含每个页面中的用户数 在SQL中,它可能如下所示: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
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
}
);