gpt4 book ai didi

c# - 如何在where子句中将字符串转换为DateTime?

转载 作者:太空宇宙 更新时间:2023-11-03 21:31:07 26 4
gpt4 key购买 nike

我必须将日历中选择的日期(startdat 和 enddat)与我的 SQL 2008 R2 数据库中的日期进行比较。我必须用 LINQ 编写它,但在我的 View 中,DateTime 被转换为字符串 (Varchar),所以我必须在我的 LINQ 查询中将它转换回 DateTime。我的基本查询现在看起来像这样:

var reportlist = (from r in context.Monthly_Report
where r.CreateDate >= startdat && r.CreateDate <= enddat
select r.Ticketnumber).ToList();

所以我得到的 CreateDate 是一个 String 并且为了比较我必须转换它。我已经用 Convert.ToDateTime() 试过了,但是 L2E 有问题。那么我如何才能像在 SQL 脚本中那样转换它,或者让 SQL 知道我的意思呢?

感谢我得到的每一次帮助。 (顺便说一句,我不允许更改 View )

最佳答案

您只能在 Linq to Entities 中使用一组精简的函数。此函数将被转换为数据库函数。

您可以使用:

这些组都不包含可以将字符串转换为日期时间的函数,因此无法直接执行此操作。

你必须寻找替代品:

  • 创建一个数据库 View ,将“字符串化”日期时间公开为日期时间列并查询它
  • 创建存储过程并使用它
  • 如果可能的话,将日期时间转换为字符串并进行比较(这取决于“字符串化”日期时间的样子)
  • 您可以使用之前使用子字符串的解决方案(这将映射到数据库函数)。这适用于所有情况:重新排序“字符串化”dt 日期的 y、m、d,使其看起来像“yyyymmdd”。然后将你的startdatenddat转换为相同的格式,并按字符串(字母)顺序进行比较。

关于c# - 如何在where子句中将字符串转换为DateTime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24165222/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com