代码之家  ›  专栏  ›  技术社区  ›  Nick Fleetwood

调度语法的LINQ查询

  •  0
  • Nick Fleetwood  · 技术社区  · 2 年前

    表PostThr记录了作业开始和结束的时间安排。有5个字段:ID、FK、ThrDate(DateTime)、ThrTime(TimeSpan)和ThrText(string)。“FK”是作业ID,ThrText是“确认开始”或“确认结束”。作业开始有一个条目,作业结束有另一个条目。这些工作持续时间不超过一次。

    这里的目标是显示有多少工作在同一时间处于活动状态,而不是在给定日期的同一个小时段内。因此,考虑到,

    DateTime givenDate = DateTime.Parse("7/15/22");
    DateTime givenTime = TimeSpan.Parse("9:00");
    

    我想返回所有唯一jobID的计数,从哪里开始<=9: 00,终点为>=9: 22年7月15日00点。

    我想用LINQ写这篇文章。

    一般来说,我在sql方面有点困难,因此LINQ。我觉得这里需要进行连接,但我不确定LINQ或sql中的结构或语法。我有一些微弱的LINQ尝试,但我不确定它们是否有助于展示。

    1 回复  |  直到 2 年前
        1
  •  0
  •   James Curran    2 年前

    from begin in PostThr 
    join end in PostThr on begin.FK equals end.FK
    where begin.ThrDate == givenDate && end.ThrDate == givenDate
          && begin.ThrText == "CONFIRM START"
          && end.ThrText == "CONFIRM END"
          && begin.ThrTime <= givenTime
          && end.ThrTime >= givenTime
    select new {Task=begin.FK, Date=begin.ThrDate, Start=begin.ThrTime, End=end.ThrTime}