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

如何在LINQ查询中设置InvoiceDate条件,统计当月已完成车辆记录数?

解决方法

先修正代码里的逻辑问题,再补充InvoiceDate的当月判断条件:

  1. 原代码里的IQueryable<T>查询对象永远不会为null,所以monthlyStatus == null的判断无效
  2. 直接把查询对象转字符串无法得到记录数,需要用Count()方法统计

正确代码实现

public void MonthlyStatus(NetContext context)
{
    var currentYear = DateTime.Now.Year;
    var currentMonth = DateTime.Now.Month;

    // 统计当月状态为Finish的车辆记录数
    var finishedCount = context.CarInformation
        .Count(car => car.CurrentSituation == "Finish" 
            && car.InvoiceDate.HasValue // 先确保日期字段不为空
            && car.InvoiceDate.Value.Year == currentYear
            && car.InvoiceDate.Value.Month == currentMonth);

    label1.Text = finishedCount.ToString();
}

关键说明

  • 如果InvoiceDate是可空类型(DateTime?),必须先通过HasValue判断是否有值,避免空引用异常
  • 同时匹配年份和月份,确保统计的是当前自然月的记录,而非过去30天
  • 直接用Count()方法会转换成SQL的COUNT语句,比先查询所有记录再计数更高效

如果需要统计过去30天而非自然月,可将日期条件替换为:

&& car.InvoiceDate.HasValue 
&& car.InvoiceDate.Value >= DateTime.Now.AddDays(-30)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 19:52:04