有没有办法比较Linq2Sql中的2个DateTime变量,但忽略了Time部分.
该应用程序将项目存储在数据库中并添加已发布的日期.我想保留确切的时间,但仍然可以按日期本身.
我想比较12/3/89 12:43:34和12/3/89 11:22:12然后忽略实际的时间,所以这两个都被认为是相同的.
我想我可以在比较之前将所有时间设置为00:00:00但我实际上确实想知道一天中的时间我也希望能够仅按日期进行比较.
我找到了一些具有相同问题的代码,他们分别比较了年,月和日.有一个更好的方法吗?
尝试使用Object Date
上的属性DateTime
...
if(dtOne.Date == dtTwo.Date) ....
要进行真正的比较,您可以使用:
dateTime1.Date.CompareTo(dateTime2.Date);
这就是我如何使用LINQ.
DateTime date_time_to_compare = DateTime.Now; //Compare only date parts context.YourObject.FirstOrDefault(r => EntityFunctions.TruncateTime(r.date) == EntityFunctions.TruncateTime(date_to_compare));
如果你只使用dtOne.Date == dtTwo.Date
它不能使用LINQ(错误:LINQ to Entities不支持指定的类型成员'Date')
EntityFunctions.TruncateTime
对于要在Linq中使用的DbFunctions.TruncateTime
任何DateTime
属性,应使用EF <6.0和EF> 6.0 .
例
var list = db.Cars.Where(c=> DbFunctions.TruncateTime(c.CreatedDate) >= DbFunctions.TruncateTime(DateTime.UtcNow));
DateTime dt1 = DateTime.Now.Date; DateTime dt2 = Convert.ToDateTime(TextBox4.Text.Trim()).Date; if (dt1 >= dt2) { MessageBox.Show("Valid Date"); } else { MessageBox.Show("Invalid Date... Please Give Correct Date...."); }
DateTime? NextChoiceDate = new DateTime(); DateTIme? NextSwitchDate = new DateTime(); if(NextChoiceDate.Value.Date == NextSwitchDate.Value.Date) { Console.WriteLine("Equal"); }
如果使用可为空的DateField,则可以使用此方法.