我在数据库中有名为“repeat”的DateTime字段。我想只记录今天“重复”日期的记录。
我试过了:
(...).Where(e => e.repeat.Value.Date.Day.Equals(DateTime.Now.Day));
或:
(...).Where(e => e.repeat.Value.Date.Day==DateTime.Now.Day);
但它不起作用。
有什么想法吗?
谢谢,卡米尔
答案 0 :(得分:2)
“它不起作用”非常模糊,但目前您正在检查星期几而不是日期。我建议使用:
Date today = DateTime.Today;
var query = ....Where(e => e.repeat.Value.Date == today);
编辑:目前尚不清楚这里涉及的类型是什么 - 如果repeat.Value
本身不是DateTime
,您可能需要:
var query = ....Where(e => e.repeat.Value.Date.Date == today);
答案 1 :(得分:1)
尝试一下:
(...).Where(e => (e.repeat >= DateTime.Today) && (e.repeat < DateTime.Today.AddDays(1)))
答案 2 :(得分:0)
比较短日期确保一年中每年/每月/每天都相同:
(...).Where(e => e.repeat.Value.Date.ToShortDateString() == DateTime.Now.ToShortDateString());
答案 3 :(得分:0)
专家解决方案是:在Linq查询中使用DbFunctions.CreateDateTime()。
var date = DateTime.Now.AddDays(-1).Date;
var actions = await _context.Set<Your_table>()
.AsNoTracking()
.Where(x => DbFunctions.CreateDateTime(x.YourColumn.Value.Year, x.YourColumn.Value.Month, x.YourColumn.Value.Day, 0, 0, 0) == date)
.ToListAsync();