首页 > 解决方案 > 使用 linq 显示今天和未来的日期

问题描述

所以我对 Linq 还是很陌生。我习惯于编写 SQL 查询,所以 Linq 对我来说有点困惑。

我正在尝试提取从今天开始的日期。

public List<Trails> GetTrails()
    {
        return _context.Trails.Include(p => p.TrailAttributes).Include(p => p.TrailReservations).ToList();
    }

我试过做

public List<Trails> GetTrails()
    {
        return _context.Trails.Include(p => p.TrailAttributes).Include(p => p.TrailReservations).Where(p => p.TrailReservations >= Datetime.Now).ToList();
    }

但是后来我遇到了一个问题,因为日期时间不适用于 ICollections

状态错误 CS0019 运算符“<=”不能应用于“ICollection”和“DateTime”类型的操作数

public ICollection<TrailReservations> TrailReservations { get; set; }

标签: c#linq

解决方案


您的问题是 TrailReservations 是一个集合,而不是日期时间的单个属性。您真正要求的是“给我所有未来至少有 1 个预订的路线”

假设您的 TrailReservations 实体具有某种 DateTime 属性(我们称之为 ReservationTime):

return _context.Trails.Include(p => p.TrailAttributes)
                      .Include(p => p.TrailReservations)
                      .Where(p => p.TrailReservations.Any(tr=>tr.ReservationTime >= Datetime.Now))
                      .ToList();

虽然Trails此查询的结果将是即将到来的预订,但此查询将返回该跟踪的所有预订,即使它们是过去的。


推荐阅读