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

如何在Linq的GetAll()方法中添加MOTDate日期范围查询条件

筛选MOTDate在指定日期范围内的车辆

结合你的Vehicles模型和仓储层的GetAll()方法,你可以通过传递一个Lambda表达式作为filter参数,轻松实现MOTDate的日期范围查询。这里需要注意MOTDate是可空的DateTime?类型,得先处理空值情况,避免空引用异常。

核心调用代码

// 定义你的起始和结束日期(替换成实际业务中的日期值)
DateTime dateFrom = new DateTime(2024, 1, 1);
DateTime dateTo = new DateTime(2024, 12, 31);

// 调用GetAll并传入MOTDate的筛选条件
var vehicleList = VehicleRepo.GetAll(
    filter: v => v.MOTDate.HasValue 
                 && v.MOTDate.Value >= dateFrom 
                 && v.MOTDate.Value <= dateTo
);

关键细节说明

  • 处理可空字段:先通过v.MOTDate.HasValue判断该字段是否有值,确保后续访问Value属性时不会抛出空引用异常。
  • 日期范围逻辑:v.MOTDate.Value >= dateFrom和v.MOTDate.Value <= dateTo确保只返回MOTDate落在指定区间内的车辆。
  • 包含全天数据:如果dateTo的时间部分是默认的00:00:00,当天晚于这个时间的记录会被排除。如果需要包含dateTo当天的所有时刻,可以调整日期范围:
    // 调整dateTo为当天的最后一刻,确保包含全天数据
    var adjustedDateTo = dateTo.Date.AddDays(1).AddTicks(-1);
    var vehicleList = VehicleRepo.GetAll(
        filter: v => v.MOTDate.HasValue 
                     && v.MOTDate.Value >= dateFrom 
                     && v.MOTDate.Value <= adjustedDateTo
    );
    

扩展用法:添加排序和关联实体

如果需要对结果排序或者加载关联实体,直接利用GetAll的其他参数即可:

var vehicleList = VehicleRepo.GetAll(
    filter: v => v.MOTDate.HasValue 
                 && v.MOTDate.Value >= dateFrom 
                 && v.MOTDate.Value <= dateTo,
    orderBy: query => query.OrderByDescending(v => v.MOTDate), // 按MOTDate倒序排列
    includeProperties: "SomeRelatedEntity" // 加载关联实体(如果模型有定义的话)
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 09:07:29