49 c# linq datetime linq-to-entities datetime-comparison
请帮忙.我试图弄清楚如何在linq查询中使用DATE或DATETIME进行比较.
示例:如果我想要在今天之前启动的所有员工姓名,我会在SQL中执行以下操作:
SELECT EmployeeNameColumn
FROM EmployeeTable
WHERE StartDateColumn.Date <= GETDATE() //Today
Run Code Online (Sandbox Code Playgroud)
但是linq怎么样?
DateTime startDT = //Today
var EmployeeName =
from e in db.employee
where e.StartDateColumn <= startDT
Run Code Online (Sandbox Code Playgroud)
上面的WHERE不起作用:
异常详细信息:System.NotSupportedException:LINQ to Entities中不支持指定的类型成员"Date".仅支持初始值设定项,实体成员和实体导航属性.
Man*_*jua 78
使用该类DbFunctions修剪时间部分.
using System.Data.Entity;
var bla = (from log in context.Contacts
where DbFunctions.TruncateTime(log.ModifiedDate)
== DbFunctions.TruncateTime(today.Date)
select log).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
jas*_*son 20
这应该工作.您确定查询的其他部分没有触发异常吗?我有几个表单查询实例
var query = from e in db.MyTable
where e.AsOfDate <= DateTime.Now.Date
select e;
Run Code Online (Sandbox Code Playgroud)
在我的代码中.
Shi*_*iji 10
这可能是由于数据库中的日期可以为空.试试这个:
var EmployeeName =
from e in db.employee
where e.StartDateColumn.Value <= startDT
Run Code Online (Sandbox Code Playgroud)
小智 8
你可以检查这样的情况
var nextDay = DateTime.Today.AddDays(1);
var query = from e in db.MyTable
where e.AsOfDate >= DateTime.Today && e.AsOfDate < nextDay
select e;
Run Code Online (Sandbox Code Playgroud)
在今天(00:00:00)和tommorow(00:00:00)之间检查时,您将获得AsOfDate日期的记录,我们将获得今天的日期记录...
小智 5
你不能使用.Date
如果您想今天查看,可以立即创建日期时间
DateTime myDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
var e = (from mds in myEntities.Table
where mds.CreateDateTime >= myDate
select mds).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
91060 次 |
| 最近记录: |