【问题标题】:Between/Timerange LINQ之间/时间范围 LINQ
【发布时间】:2010-12-06 12:03:33
【问题描述】:

我正在尝试获取两个日期时间之间的预订。

有:

开始(日期时间)和小时(持续时间,时间跨度)..

我用谷歌搜索发现其他几个有这些问题,因为 LINQ 不能很好地转换为 T-SQL ..

这是我的 LINQ 查询和翻译后的 T-SQL:http://pastebin.com/sLrpWLma

我已经看到这里有人创建了一些应该可以工作的扩展方法,但我不确定该方法应该放在哪里以及使用哪些修饰符使其在我的查询中可用? LINQ Between Operator

【问题讨论】:

    标签: c# visual-studio linq


    【解决方案1】:

    这里的 IMO 部分问题是架构;如果系统没有明确的开始和结束,系统总是会挣扎;查询不仅难以编写,而且还必须按行进行计算。

    我将在表级别进行处理,例如使用持久计算列:

    create table Booking (
        Start datetime,
        DurationMinutes int,
        [End] AS (DATEADD(minute,(DurationMinutes),Start)) PERSISTED
    )
    

    现在你可以查询了:

    where b.Start >= someTime and b.End < someTime
    

    (作为示例)- 在 TSQL 中应该非常干净地映射。

    因为它是一个计算列,所以您永远不会有不一致的End 值;并且因为它被标记为PERSISTED,所以它不需要按行进行计算(除非你弄乱了SET 选项......)。如果您愿意,您甚至可以索引PERSISTED 列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-22
      • 2010-10-19
      • 2012-04-02
      • 2012-08-25
      • 1970-01-01
      • 1970-01-01
      • 2012-04-07
      • 2016-01-10
      相关资源
      最近更新 更多