如何在实体框架中将字符串与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进行比较

将字符串更改为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格式。