当前位置:  开发笔记 > 编程语言 > 正文

如何在Linq中的DateTime类型中仅将没有时间的Date与实体框架的SQL进行比较?

如何解决《如何在Linq中的DateTime类型中仅将没有时间的Date与实体框架的SQL进行比较?》经验,为你挑选了6个好方法。

有没有办法比较Linq2Sql中的2个DateTime变量,但忽略了Time部分.

该应用程序将项目存储在数据库中并添加已发布的日期.我想保留确切的时间,但仍然可以按日期本身.

我想比较12/3/89 12:43:34和12/3/89 11:22:12然后忽略实际的时间,所以这两个都被认为是相同的.

我想我可以在比较之前将所有时间设置为00:00:00但我实际上确实想知道一天中的时间我也希望能够仅按日期进行比较.

我找到了一些具有相同问题的代码,他们分别比较了年,月和日.有一个更好的方法吗?



1> Quintin Robi..:

尝试使用Object Date上的属性DateTime...

if(dtOne.Date == dtTwo.Date)
    ....


如果您在2017年初之后的某个时间到此处寻找一种方法来比较实体框架环境中的日期,就像我一样,请查看Alejandro下面的答案和wasatchWizard的评论.
如果您在2018年年中之后的某个时候结束在这里的生活,并且正在寻找一种方法来阅读另一条非常有帮助的评论,例如上面的评论,那您就不走运了。
如果您在2019年初之后的某个时间到这里寻找漫画救济,那么您已经找到了。

2> Reed Copsey..:

要进行真正的比较,您可以使用:

dateTime1.Date.CompareTo(dateTime2.Date);


"真正的比较"究竟是什么意思?
但谁想要`-1`,'0`和`1`,真的吗?它们只是代表"少","平等"和"更大"的神奇数字.然后你必须将得到的整数"比较",因为有三个可能的值.我必须同意@David的说法,在大多数应用程序中使用`dateTime1.Date `和`> =`更为自然.
@JeppeStigNielsen如果你在任何排序或采取comaprison的东西中使用它,那么你想要它 - 否则,你通常只想要运营商.
Randolpho:使用==会给你平等,所以两个日期是相同还是不同.CompareTo将〜比较〜他们,即:在一次传递中给你一个方法来判断date1> date2,date1 @ReedCopsey你不能只使用(dateTime1.Date
3> Alejandro de..:

这就是我如何使用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')


这对LINQ to Entities很有用.但是,在.NET 4.5.2中不推荐使用`EntityFunctions`.请改用:`DbFunctions.TruncateTime`.它似乎是相同的方法,只是移动..

4> Korayem..:

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));



5> 小智..:
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....");
}



6> 小智..:
DateTime? NextChoiceDate = new DateTime();
DateTIme? NextSwitchDate = new DateTime();
if(NextChoiceDate.Value.Date == NextSwitchDate.Value.Date)
{
Console.WriteLine("Equal");
}

如果使用可为空的DateField,则可以使用此方法.

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有