Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在对数据库的C#linq查询中使用DateTimeOffset_C#_Linq_Datetime_Linq To Sql_Datetimeoffset - Fatal编程技术网

如何在对数据库的C#linq查询中使用DateTimeOffset

如何在对数据库的C#linq查询中使用DateTimeOffset,c#,linq,datetime,linq-to-sql,datetimeoffset,C#,Linq,Datetime,Linq To Sql,Datetimeoffset,我在我的项目中使用实体框架和AutoMapper。在数据库中,DatreTime字段最初创建为字符串类型字段,并保持不变(例如字段'DepartureTime'和'ArrivalTime')。我试图在linq查询中通过使用DateTimeOffset将解决方案中的DateTime与dbContext进行比较,以便将字符串转换为DateTime。但我犯了个错误 我使用的查询是: db.Passengers .Where(p => p.AreaOfVisit == area &&

我在我的项目中使用实体框架和AutoMapper。在数据库中,DatreTime字段最初创建为字符串类型字段,并保持不变(例如字段'DepartureTime'和'ArrivalTime')。我试图在linq查询中通过使用DateTimeOffset将解决方案中的DateTime与dbContext进行比较,以便将字符串转换为DateTime。但我犯了个错误

我使用的查询是:

db.Passengers
.Where(p => p.AreaOfVisit == area && DateTimeOffset.Parse(p.DepartureTime).UtcDateTime > incidentDate &&
                            DateTimeOffset.Parse(p.ArrivalTime).UtcDateTime < incidentDate).ProjectTo<PassengerDTO>()
                .ToList();
db
.Where(p=>p.AreaOfVisit==area&&DateTimeOffset.Parse(p.DepartureTime).UtcDateTime>incidentDate&&
DateTimeOffset.Parse(p.ArrivalTime).UtcDateTime
我收到了这个错误消息

System.NotSupportedException HResult=0x8013155消息=LINQ to 实体无法识别方法“System.DateTimeOffset” Parse(System.String)“”方法,无法转换此方法 转换为存储表达式


解决此问题的最佳方法是什么。

可能重复的@mjwills p.DepartureTime和p.ArrivalTime都是字符串。“incidentDate”是一个DateTime,我试图在linq queryI中进行比较。我强烈建议不要将日期作为字符串存储在数据库中。即使你解决了这个具体问题,你也会有无尽的痛苦和悲哀。现在咬紧牙关,远离数据库中的字符串。@mjwills yes根据您的建议将数据库字段从字符串类型更改为DateTime。现在不需要在linq查询内部进行转换,这是一个明智的选择。