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

基于时间与状态筛选的预订表LINQ分组统计异常排查

问题排查与修正

核心问题分析

  1. 过滤条件逻辑错误:你写的Where(x => x.DateTime >= bookingsStartDateTime || x.ShouldBeConsidered)用了逻辑或,会把所有ShouldBeConsidered=true的记录(哪怕日期超出最近10天范围)都纳入统计,这直接导致总预订数和问题记录数偏多,完全违背了你“统计最近10天内用户预订”的核心需求。
  2. 变量引用笔误:GroupBy里的br.PId、Select里的br.Key都是错误的变量名,应该用分组后的x(或重命名为g更清晰)来引用字段和分组Key;另外Dal是你定义的DTO类,要确保语法上用new Dal()初始化。

修正后的代码

var res = await this.context.Bookings
    // 仅筛选最近10天内的预订记录
    .Where(x => x.DateTime >= bookingsStartDateTime)
    // 按用户ID分组
    .GroupBy(x => x.PersonId)
    .Select(g => new Dal // 替换成你实际的DTO类名称
    {
        Id = g.Key,
        // 统计该用户最近10天内的总预订数
        TotalBookings = g.Count(),
        // 统计该用户最近10天内ShouldBeConsidered为true的记录数
        BookingsIssues = g.Count(item => item.ShouldBeConsidered)
    })
    .ToListAsync();

补充说明

  • 确保bookingsStartDateTime是正确计算的时间节点,比如用DateTime.UtcNow.AddDays(-10)(推荐用UTC时间避免时区偏差)来获取“10天前”的时间点。
  • 如果需要统计“最近10天内无预订,但存在历史问题记录”的用户,可通过左连接实现,但根据你的需求描述,当前代码已满足基础统计要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 09:15:38