[英]How to get a short DateTime from SQL Server database and compare with DateTime.Now using Linq c#
我的表中有一栏dates
的date
数据类型的shortDate格式“2018年2月12日”。
现在我希望使用 C# 中的 Linq 查询来检索日期。
这是我在 SQL Server 上运行的查询,它返回一些行:
select *
from tbl_Attendance
where Dates = '2018/2/12'
但是,如果我尝试运行这些查询,它会返回 null 或“方法无法转换为存储表达式”错误。
只有以下查询返回了正确的 ID 但不正确的日期。
var q = (from a in context.tbl_Attendance
where a.ID.Value.CompareTo(Iden) < 0 && a.Dates.Value.CompareTo(DateTime.Now) < 0
select a).FirstOrDefault();
和:
var q = (from a in context.tbl_Attendance
where a.Dates == DateTime.Now
select a).FirstOrDefault();
和:
var q = (from a in context.tbl_Attendance
where a.Dates.Value.ToShortDateString() == DateTime.Now.ToShortDateString()
select a).FirstOrDefault();
最后我也尝试过:
attendance = context.tbl_Attendance.Where(d => d.ID == row.xID && d.Dates == DateTime.Now).FirstOrDefault();
如果要将某个日期与另一个日期进行比较,则不必使用DateTime.Now
因为它还会比较时间部分。 请改用DateTime.Today
。
错误
方法无法转换为 store 表达式
出现是因为DateTime.Now.ToShortDateString()
或CompareTo()
无法转换为 SQL 查询。
我的建议:首先声明一个变量,然后为它赋值,然后在第二步查询你的数据库。
代码:
DateTime myDate = DateTime.Today; // or DateTime.Parse("2018/2/12")
var result = (from a in context.tbl_Attendance
where a.Dates == myDate
select a).FirstOrDefault();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.