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

如何通过LINQ按日期属性获取带来源分组的聚合计数

使用LINQ实现按来源和日期统计网站访问量

完全可以通过LINQ实现你想要的聚合效果,核心是通过双重分组先按「来源+日期」统计每日访问量,再按来源归类。

假设你的访问记录实体类定义如下(可根据实际结构调整):

public class VisitRecord
{
    public DateTime Timestamp { get; set; } // 访问时间戳
    public string Source { get; set; }      // 访问来源(如google、yahoo)
}

对应的LINQ实现代码:

var dailySourceStats = tableName
    // 第一步:按「来源+日期」分组,统计每组的访问次数
    .GroupBy(visit => new 
    {
        visit.Source,
        Date = visit.Timestamp.Date // 提取日期部分,忽略时分秒
    })
    .Select(group => new 
    {
        group.Key.Source,
        group.Key.Date,
        Count = group.Count()
    })
    // 第二步:按来源再次分组,将同一来源的日期统计结果聚合
    .GroupBy(item => item.Source)
    // 转换为字典结构,键是来源,值是日期-计数的列表
    .ToDictionary(
        sourceGroup => sourceGroup.Key,
        sourceGroup => sourceGroup.Select(item => new 
        {
            Date = item.Date.ToString("MM/dd/yyyy"), // 格式化日期为指定格式
            item.Count
        }).ToList()
    );

代码说明:

  • 第一层GroupBy使用匿名类组合Source和Date,确保同一天同一来源的访问被归为一组,通过Count()得到当日访问量。
  • 第二层GroupBy将同一来源的所有日期统计结果整合,最后用ToDictionary生成你期望的键值对结构,键为来源名称,值为包含日期和对应计数的列表。
  • 如果你的时间戳是字符串类型,需要先转换为DateTime再提取日期,例如:Date = DateTime.Parse(visit.TimestampStr).Date。

内容的提问来源于stack exchange,提问作者user101289

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:15:27