我正在开发一个程序,该程序保留物理广告点列表及其预订(日期范围)。该程序需要能够为广告类别中的广告找到“开放点”。
我有三个表:AdTypes、AdPlaces 和 Reservations。目前,我正在实现一个查询,用于搜索日期与用户选择的日期范围不冲突的预订,并将 AdType 项目作为列表返回。如果每个 AdType 在某个时间点都有预订,则此方法有效,但它不会列出在 Reservations 表中找不到的 AdType。
过滤是在 AdTypes 查询的 PreProcessQuery 中完成的,如下所示:
query = query.Where(r => r.Reservations.Any(res => (res.Begindate > Begindate && Enddate < res.Enddate) || (res.Enddate < Begindate && Enddate > res.Begindate)));
如何“扩展”查询,以便将所有没有预留的 AdType 列在“过期”的 AdType 预留旁边?