【问题标题】:How to Combine Date and Time in LINQ to SQL如何在 LINQ to SQL 中组合日期和时间
【发布时间】:2018-06-07 06:39:09
【问题描述】:

使用Linq to SQL,我想先将这两个字段组合起来:DateEnterDate?类型)和TimeEnterInteger?类型)。按降序对它们进行排序。将 DateEnterTimeEnter 组合到一个 select 字段中。

我不断收到不支持翻译 sql 的方法。

Dim query = From a In dataContext.Orders
            Join b In dataContext.OrderStatus On b.OrderName Equals a.Name
            Where b.Status = "Finished"
            Let UpdatedAt = b.DateEnter + TimeSpan.FromHours(b.TimeEnter)
            Order By UpdatedAt Descending
            Select New With {
                Key .LastUpdatedAt = UpdatedAt,
                Key .Name = a.Name,
                Key .Owner = a.OrderOwner}

【问题讨论】:

  • 请记住,LINQ 只是语法糖,它是特定的 LINQ 提供程序来完成繁重的工作。在使用 LINQ to SQL 的情况下,您的 VB 代码需要翻译成 T-SQL 才能对数据库执行,并且无法翻译 TimeSpan.FromHours。 Entity Framework 有自己的库,其中包含执行此类操作的方法。不确定 L2S 是否有类似的东西,但我认为你必须在数学上进行。
  • 什么 SQL 引擎/数据库提供程序?

标签: sql-server vb.net linq-to-sql


【解决方案1】:
Dim query = From a In dataContext.Orders
            Join b In dataContext.OrderStatus On b.OrderName Equals a.Name
            Where b.Status = "Finished"
            Order By b.DateEnter.Value.AddSeconds(b.TimeEnter) Descending
            Select New With {
                Key .LastUpdatedAt = b.DateEnter.Value.AddSeconds(b.TimeEnter)
                Key .Name = a.Name,
                Key .Owner = a.OrderOwner}

能够得到它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    相关资源
    最近更新 更多