我的数据库SQL Server中有“ DepositDate”列,具有“ Deposit”表,其类型为datetime。我有今天日期的行,其中之一是2019-02-14 22:26:50.000今天的日期是相同的,我的意思是2019-02-14但是当尝试通过以下代码获取今天的所有行时,它没有工作。我认为随着时间的流逝,时间会有一些变化。但是现在写,我只对一天感兴趣,但是我想保留数据库中的datetime类型。因此,我必须在搜索的日期上加上时间吗?我使用Linq和Entities
我喜欢这样,我没有收到错误但没有找到该行。返回空的datagridview
DateTime TodayDate = Convert.ToDateTime(DateTime.Now.ToString());
var deposit = (from u in db.Deposit
where u.DepositDate == TodayDate
select u).ToList();
if (deposit != null)
{
dgvDeposit.DataSource = null;
dgvDeposit.DataSource = deposit;
}
我什至尝试但我却犯错了
LINQ to ADO实体中不支持日期
DateTime TodayDate = Convert.ToDateTime(DateTime.Now.Date);
where u.DepositDate.Value.Date == TodayDate
非常感谢您的帮助
如果要使用可能包含的任何索引,则必须在开始日期和结束日期之间进行过滤DepositDate
。如果您不关心是否存在规范日期函数,则可以使用该函数从数据库值中剥离时间。
DateTime today = DateTime.Today;
DateTime tomorrow = today.AddDays(1);
var deposit = (from u in db.Deposit
where u.DepositDate >= today && u.DepositDate < tomorrow
select u).ToList();
或者作为lambda
var deposits = db.Deposit
.Where(u => u.DepositDate >= today && u.DepositDate < tomorrow)
.ToList();
作为附带说明和意见,通常建议DbSet<T>
对您的属性DbContext
(例如db.Deposits
)进行复数处理。您的变量也deposit
一样,因为它的类型List<Deposit>
是一个集合(我更改了第二个代码示例)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句