LINQ过滤器范围日期与选择案例

本文关键字:选择 案例 日期 过滤器 范围 LINQ | 更新日期: 2023-09-27 18:28:28

我有两个表:汽车和汽车历史,表中的字段Car:

Car_ID Int
APP_DT DateTime

车辆历史记录表中的字段:

Car_ID Int
Action String
Created_DT Datetime

并且我必须过滤app_dt和Created_dt之间的重叠日期,

(App_DT <= End) && (Created_dt >= Start && action == 'Closed')

然而,这辆车可能还没有关闭,所以历史上没有数据。

如果汽车还没有关闭,Created_dt也将为true。。我如何在LINQ中做到这一点?

LINQ过滤器范围日期与选择案例

您将对此使用Join语句

var cars = from car in CarList //List<Car>
           join carHistory in CarHistoryList //List<CarHistory>
                on car.Car_ID equals carHistory.Car_ID
           where car.App_DT <= End && carHistory.Created_dt >= Start 
                 && carHistory.Action == 'Closed'
           select car;

如果您知道需要返回没有匹配car historycars,则需要将其设置为左外部联接