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

如何在Entity Framework中统计存在至少一个Hodnota1=1的分钟数

解决Entity Framework统计符合条件的分钟数问题

嘿,我来帮你搞定这个EF的分组统计需求!你的目标是统计指定时间范围内至少有一条Hodnota1=1记录的分钟数量,每分钟不管有多少条符合条件的记录都只算一次,对吧?

核心思路拆解

  • 先过滤有效记录:首先我们只需要关心Hodnota1 == 1的记录,所以在Where条件里要加上这个过滤,避免无效数据干扰分组。
  • 按分钟维度分组:把每条记录的Time字段截断到分钟级别(去掉秒、毫秒部分),这样同一分钟内的所有记录会被分到同一个组里。
  • 统计分组数量:每个分组对应一个符合条件的分钟,所以直接对分组结果调用Count()就能得到我们要的分钟数。

完整代码实现

public float RunPercent(DateTime start, DateTime end) {
    var countMinutes = db.ESP_LOG
        // 过滤时间范围 + 只保留Hodnota1=1的记录
        .Where(t => t.Time > start && t.Time < end && t.Hodnota1 == 1)
        // 按分钟级别的时间戳分组
        .GroupBy(t => new DateTime(
            t.Time.Year, 
            t.Time.Month, 
            t.Time.Day, 
            t.Time.Hour, 
            t.Time.Minute, 
            0 // 秒和毫秒设为0,统一到分钟起点
        ))
        // 统计分组数量,即符合条件的分钟数
        .Count();
    return countMinutes;
}

额外说明(针对不同EF版本)

如果你使用的是EF Core 3.0+,可以用更简洁的Truncate方法来截断时间到分钟:

.GroupBy(t => t.Time.Truncate(TimeSpan.FromMinutes(1)))

这个写法更直观,不过构造DateTime的方式兼容性更强,能适配大部分EF版本。

这样修改后,就能准确统计出至少有一条Hodnota1=1的分钟数量,和你预期的结果6完全匹配啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 11:02:52