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

.NET Core 2.0 Razor Pages:如何用LINQ IQueryable分组统计登录数据

没问题,我来帮你搞定这个需求!下面是具体的实现步骤和代码示例:

实现方法

首先,我们可以创建一个**视图模型(ViewModel)**来存储分组统计后的结果,这样在Razor页面中遍历展示会更清晰:

public class UserLogStats
{
    public string UserName { get; set; }
    public int LogOnCount { get; set; }
    public DateTime LastLogOnTime { get; set; }
}

接下来,在你的Razor Page后台代码(.cshtml.cs文件)中,修改OnGet()方法,用LINQ的GroupBy和聚合函数完成查询:

public IList<UserLogStats> UserLogStats { get; set; }

// 假设你已经注入了DbContext实例,比如:
private readonly YourDbContext _dbContext;

public YourPageModel(YourDbContext dbContext)
{
    _dbContext = dbContext;
}

public void OnGet()
{
    UserLogStats = _dbContext.MyData
        // 按UserName字段分组
        .GroupBy(u => u.UserName)
        // 将分组结果投影到我们的ViewModel中
        .Select(g => new UserLogStats
        {
            UserName = g.Key,
            // 统计当前用户的登录总次数
            LogOnCount = g.Count(),
            // 获取当前用户的最后登录时间(可选,按需保留)
            LastLogOnTime = g.Max(l => l.LogOn)
        })
        // 转换为可直接遍历的List集合
        .ToList();
}

代码解释:

  • GroupBy(u => u.UserName):把MyData数据集按照用户名分组,每个分组对应一个用户的所有登录记录。
  • g.Count():统计每个分组内的记录数量,也就是该用户的登录次数。
  • g.Max(l => l.LogOn):获取分组内最新的登录时间,如果不需要这个字段,直接移除相关代码即可。
  • .ToList():将EF生成的IQueryable查询转换为List,方便在Razor页面中遍历。

在Razor页面(.cshtml)中展示结果:

你可以用foreach循环来渲染统计数据:

<table>
    <thead>
        <tr>
            <th>用户名</th>
            <th>登录次数</th>
            <th>最后登录时间</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var stat in Model.UserLogStats)
        {
            <tr>
                <td>@stat.UserName</td>
                <td>@stat.LogOnCount</td>
                <td>@stat.LastLogOnTime.ToString("dd/MM/yyyy HH:mm")</td>
            </tr>
        }
    </tbody>
</table>

注意事项:

  • 确保MyData实体类中的LogOn字段是DateTime类型,这样EF才能正确将Max等聚合函数转换为SQL语句执行。
  • 如果只需要统计登录次数,不需要最后登录时间,直接删除LastLogOnTime相关的代码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:34:44