You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LINQ查询浏览记录如何按用户去重并统计总浏览次数

浏览量统计重复问题解决方法

问题原因

你当前的逻辑是遍历所有原始浏览记录,每遍历一条就对应用户计算一次总浏览量,所以用户有多少条原始浏览记录,最终结果里就会重复出现多少次该用户的统计值。

解决方法

使用LINQ的GroupBy方法先按用户ID分组,再对每个分组计算浏览量总和,就能保证每个用户仅生成一条统计结果,参考代码如下:

// 直接在查询阶段分组聚合,返回每个用户对应的总浏览量
var userViewStatistics = _viewHistoryRepository.GetAll()
    .GroupBy(viewRecord => viewRecord.MemberId)
    .Select(group => new 
    {
        MemberId = group.Key,
        TotalViewCount = group.Sum(item => item.ViewsCount)
    })
    .ToList();

如果需要输出用户名而不是用户ID,可以关联用户表查询,示例如下:

var userViewStatistics = _viewHistoryRepository.GetAll()
    .GroupBy(viewRecord => viewRecord.MemberId)
    .Select(group => new 
    {
        MemberId = group.Key,
        TotalViewCount = group.Sum(item => item.ViewsCount)
    })
    // 关联用户表获取用户名,可根据实际业务调整关联逻辑
    .Join(
        _memberRepository.GetAll(),
        stat => stat.MemberId,
        member => member.Id,
        (stat, member) => new 
        {
            UserName = member.UserName,
            TotalViewCount = stat.TotalViewCount
        }
    )
    .ToList();

最后遍历userViewStatistics输出结果即可,每个用户仅会出现一次,完全符合预期要求。


内容的提问来源于stack exchange,提问作者Kübra Sönmez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 19:15:05