gpt4 book ai didi

c# - 如何使用 LINQ 从 sql 查询编写 linq 查询?

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

我有一个包含两列的表,例如 BookingArrivedEnquiredTime,数据类型为 varchar,日期时间为 BookingArrivedEnquiredDateTime。当我在 SQL Server 中执行此查询时,结果给出了完美的时间排序顺序sql查询就像

select BookingArrivedEnquiredTime from BookingArriveds where BookingArrivedEnquiredDateTime='2015-02-17 00:00:00.000' 
order by CAST(('01/01/2000 ' + BookingArrivedEnquiredTime) AS DATETIME)

它会像这样输出

11:27 AM
11:47 AM
11:53 AM
12:13 PM
12:50 PM
02:02 PM
02:47 PM
03:04 PM
03:16 PM

当我尝试使用 linq 进行此查询时

public ViewResult Index1(DateTime? Startdate) 
{
Startdate = DateTime.Now.Date;
var fm = DateTime.Parse("01/01/2000");
var qr = from item in db.BookingArriveds
where item.BookingArrivedEnquiredDateTime == Startdate
orderby DateTime.Parse("01/01/2000 " +
item.BookingArrivedEnquiredTime.ToString())
select item;
return View(qr);
}

但是它给出了这样的错误

LINQ to Entities does not recognize the method 'System.DateTime Parse(System.String)' method, and this method cannot be translated into a store expression.

哪里错了,我需要帮助如何将上面的 sql 查询重写为 linq 查询,并在 linq 中从 varchar 转换为 datetime?

最佳答案

正如其他人所回答的那样,这会中断,因为 .ToString 在进入数据库的过程中无法转换为相关的 SQL。

但是,Microsoft 提供了 SqlFunctions class这是一组可以在这种情况下使用的方法。

对于这种情况,您在这里寻找的是 SqlFunctions.StringConvert :

public ViewResult Index1(DateTime? Startdate) 
{
Startdate = DateTime.Now.Date;
var fm = DateTime.Parse("01/01/2000");
var qr = from item in db.BookingArriveds
where item.BookingArrivedEnquiredDateTime == Startdate
orderby SqlFunctions.StringConvert("01/01/2000 " +
item.BookingArrivedEnquiredTime.ToString())
select item;
return View(qr);
}

当出于任何原因不希望使用临时变量的解决方案时,这很好。

关于c# - 如何使用 LINQ 从 sql 查询编写 linq 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29161784/

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