LINQ:以 3 种方式加入计数用户
LINQ: Count Users in 3 way join
我在使用 LINQ to SQL 时遇到了问题,我认为应该不会太难。
在 SQL 中,我有一个 BusinessUnits,它分为 OrgUnits,而 Users 属于一个 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
但是在 LINQ 中我得到了这个,但是很难得到正确的计数。
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
{
BusinessUnitID = g.Key,
UserCount = g.Count()
};
也许这个
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
}
);
我在使用 LINQ to SQL 时遇到了问题,我认为应该不会太难。 在 SQL 中,我有一个 BusinessUnits,它分为 OrgUnits,而 Users 属于一个 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
但是在 LINQ 中我得到了这个,但是很难得到正确的计数。
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
{
BusinessUnitID = g.Key,
UserCount = g.Count()
};
也许这个
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
}
);