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

ASP.NET MVC停车系统:如何用Linq Group By统计时段停车车辆数

使用C# LINQ实现停车时长时段统计

1. 定义对应的数据实体类

先把SQL表的记录映射为C#实体类,方便LINQ操作:

public class ParkingRecord
{
    public string LicencePlate { get; set; }
    public DateTime EntryTime { get; set; }
    public DateTime DepartureTime { get; set; }
    public int SerialCode { get; set; }
}

2. 核心实现步骤

假设你已从数据库获取到所有停车记录集合List<ParkingRecord> allRecords,按以下步骤完成统计:

步骤1:过滤特定日期的记录

先筛选出目标日期内的记录(示例以离场日期为筛选条件,可根据业务需求改为入场日期):

DateTime targetDate = new DateTime(2022, 9, 2); // 要统计的目标日期
var targetRecords = allRecords.Where(r => 
    r.DepartureTime.Date == targetDate.Date);

步骤2:计算停车时长并分组

根据业务需求选择对应分组逻辑:

场景A:统计各时长区间的车辆数(如0-1h、1-2h、2h以上)

var durationGroups = targetRecords
    .Select(r => new 
    {
        r.LicencePlate,
        ParkingHours = r.DepartureTime.Subtract(r.EntryTime).TotalHours
    })
    .GroupBy(x => 
        x.ParkingHours switch
        {
            <= 1 => "0-1小时",
            <= 2 => "1-2小时",
            _ => "2小时以上"
        })
    .Select(g => new 
    {
        DurationRange = g.Key,
        VehicleCount = g.Count()
    });

场景B:精确统计接近特定时长的车辆数(如停车时长约1小时)

考虑到秒级误差,用范围判断筛选:

var oneHourCount = targetRecords
    .Count(r => 
        r.DepartureTime.Subtract(r.EntryTime).TotalHours is >= 0.95 and <= 1.05);

场景C:按整数小时向上取整统计

var roundedHourGroups = targetRecords
    .Select(r => new 
    {
        RoundedHours = Math.Ceiling(r.DepartureTime.Subtract(r.EntryTime).TotalHours)
    })
    .GroupBy(x => x.RoundedHours)
    .Select(g => new 
    {
        Hours = g.Key,
        VehicleCount = g.Count()
    });

步骤3:输出统计结果

遍历分组结果即可生成报表数据:

foreach (var group in durationGroups)
{
    Console.WriteLine($"时段:{group.DurationRange},车辆数:{group.VehicleCount}");
}

关键说明

  • 时间差计算:TotalHours返回带小数的精确小时数;若仅需整数小时,可使用Hours属性(会丢失分钟、秒级信息)。
  • 过滤逻辑可灵活调整:比如要统计“今日入场”的车辆,只需把过滤条件改为r.EntryTime.Date == targetDate.Date。
  • 分组粒度可自定义:如需按30分钟为一个时段,修改GroupBy的判断条件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 08:24:14