如何在实体框架中将字符串与DateTime进行比较
本文关键字:DateTime 比较 字符串 实体 框架 | 更新日期: 2023-09-27 18:21:06
我有一个实体框架模式,如下所示。
Class Contact
{
string name;
DateTime creationDate;
}
and i've a string that is
string date="9/9/14 3:00:00 PM"
我正在执行以下查询
var q=from u in db.Contacts where u.creationDate.ToString==date select u;
但是我面临以下错误
LINQ to Entities无法识别方法"System.String ToString()"方法,并且此方法无法转换为存储表达式。
有人能告诉我如何将dateTime和string进行比较吗?可能的铸件有哪些?
将字符串更改为DateTime,类似于(new DateTime()不起作用,原因与.ToString()不工作相同,即实体框架不知道它):
[EdmFunctionAttribute("Edm", "CreateDateTime")]
public static Nullable<DateTime> CreateDateTime(
Nullable<int> year,
Nullable<int> month,
Nullable<int> day,
Nullable<int> hour,
Nullable<int> minute,
Nullable<double> second
)
参数
年类型:System.Nullable
The year part of the new date.
月类型:System.Nullable
The month part of the new date.
天类型:System.Nullable
The day part of the new date.
小时类型:System.Nullable
The hour part of the new date.
分钟类型:System.Nullable
The minutes part of the new date.
第二类型:System.Nullable
The seconds part of the new date. Note that you can specify fractions of a second with this parameter.
类似以下内容:
var date = DateTime.Parse("9/9/14 3:00:00 PM");
var q from u in db.Contacts
where u.creationDate == date
select u;
List<Contact> t = new List<Contact>();
String date="9/9/14 3:00:00 PM"
var result = t.Where(m => m.creationDate == DateTime.ParseExact(date,"M/d/yy h:mm:ss tt",null));
尝试将日期拆分为多个部分。
string dt = "9/9/14 3:00:00 PM";
var date = DateTime.ParseExact(dt,"M/d/yy h:mm:ss tt",null);
var q from u in db.Contacts
.Where (u.creationDate.DateTime.Year <= date.Year
&& u.creationDate.DateTime.Month <= date.Month
&& u.creationDate.DateTime.Day <= date.Day
&& u.creationDate.DateTime.Day <= date.Hour
&& u.creationDate.DateTime.Day <= date.Minute
&& u.creationDate.DateTime.Day <= date.Second
)
select u;
您可以使用
var result = t.Where(m => m.creationDate == DateTime.ParseExact(date,"yyyy/MM/dd HH:mm:ss tt",null));
sql server中存储的日期为yyyy-MM-dd格式。