C# 如何仅在LINQ中比较日期值

C# 如何仅在LINQ中比较日期值,c#,linq,C#,Linq,我正在尝试从数据库中获取记录,其中StartTime字段应该是今天的日期 service.GetAll().Where(o => o.StartTime. == DateTime.Today.Date).Select(o => new SelectableItem(o.Id, o.TestPurpose, v == o.Id)) 数据库中的日期采用这种格式 2016-07-01 07:00:00.000 如何将此格式与今天的日期进行比较,我只需要比较日期,不需要比较时间。用于删除

我正在尝试从数据库中获取记录,其中
StartTime
字段应该是今天的日期

service.GetAll().Where(o => o.StartTime. == DateTime.Today.Date).Select(o => new SelectableItem(o.Id, o.TestPurpose, v == o.Id))
数据库中的日期采用这种格式

2016-07-01 07:00:00.000
如何将此格式与今天的日期进行比较,我只需要比较日期,不需要比较时间。

用于删除时间部分:

service.GetAll()
.Where(o => EntityFunctions.TruncateTime(o.StartTime) == EntityFunctions.TruncateTime(DateTime.Today.Date))
.Select(o => new SelectableItem(o.Id, o.TestPurpose, v == o.Id))
用于删除时间部分:

service.GetAll()
.Where(o => EntityFunctions.TruncateTime(o.StartTime) == EntityFunctions.TruncateTime(DateTime.Today.Date))
.Select(o => new SelectableItem(o.Id, o.TestPurpose, v == o.Id))

您可以使用@Renan Araujo指定的方法。 或者另一种方法是,定义两个日期并使用

.Where(o => o.StartTime >= date1 && o.StartTime < date2)

您可以使用@Renan Araujo指定的方法。 或者另一种方法是,定义两个日期并使用

.Where(o => o.StartTime >= date1 && o.StartTime < date2)

是什么阻止你使用
o.StartTime.Date==DateTime.Today
?这也是
o.StartTime.
顺便说一句,如果你的问题是如何在EF中这样做,你应该适当地更新标记和问题,因为LINQ太宽了。@IvanStoev这个问题特别指的是数据库,所以我们知道它不是
IEnumerable
,但是,是的,他应该具体说明他使用的是哪一个查询提供程序。此外,除了提供。。。供应商。。。。只需要确保从数据库中获取的类型是实际的日期类型。我见过糟糕的数据库设计,它是用“字符串”作为日期构建的。。。这让我怒不可遏:)如果是这种情况,你应该先转换成正确的类型。是什么阻止你使用
o.StartTime.Date==DateTime.Today
?这也是
o.StartTime.
顺便说一句,如果你的问题是如何在EF中转换,你应该适当地更新标记和问题,因为LINQ太宽泛了。@IvanStoev这个问题具体指的是数据库,所以我们知道它不是一个
IEnumerable
,但是是的,他应该明确他使用的查询提供程序。另外,除了提供。。。供应商。。。。只需要确保从数据库中获取的类型是实际的日期类型。我见过糟糕的数据库设计,它是用“字符串”作为日期构建的。。。这让我怒不可遏:)如果是这样的话,你应该先转换成正确的类型。@Ian Mercer:谢谢你修复了打字错误并以更清晰的方式呈现。@Ian Mercer:谢谢你修复了打字错误并以更清晰的方式呈现它。SystemNotSupported异常是在使用EnityFunctions时引发的。TruncateTImeSystemNotSupported异常是使用EnityFunctions.TruncateTIme时抛出