Linq,分组清点
本文关键字:Linq | 更新日期: 2023-09-27 18:08:23
我有一个包含多个成员的Union列表和另一个包含Union页面点击的表。需要一个报告,列出每个联合,每种成员类型的数量和点击(页面浏览量)。
单击位于具有日期和unionID
的单独表上。这很接近,但并没有真正得到我想要的结果。计数显示成员总数,但不显示点击总数。我如何得到总点击?(计数点击表中与UnionID匹配的记录)
(from c in db.view_Members_Details
join h in db.tbl_Clicks on c.unionID equals h.unionID
group c by new { c.UnionName, h.unionID } into g
select new
{
TotalClicks = g.Count(),
UnionName = g.Key.UnionName,
userTypeID1 = g.Where(x => x.UnionName.Equals(g.Key.UnionName) && x.userTypeID.Equals(1)).Count(),
userTypeID2= g.Where(x => x.UnionName.Equals(g.Key.UnionName) && x.userTypeID.Equals(2)).Count(),
userTypeID3= g.Where(x => x.UnionName.Equals(g.Key.UnionName) && x.userTypeID.Equals(3)).Count(),
}).ToList();
结果应该是:
Clicks Count | Union Name | userTypeID1 Count | userTypeID2 Count | userTypeID3 Count |
我认为你不需要WHERE中的第一个条件,因为你已经在UnionName
上分组了。
g.Count(x => x.userTypeID == 3) //etc for 1, 2, 3
至于点击,请尝试以下操作:
TotalClicks = g.Count(x => x.unionID == g.Key.unionID)