按日期筛选(linq)
我在数据库中有一个名为“repeat”的DateTime字段。我只想记录今天“重复”中的日期。按日期筛选(linq)
我想:
(...).Where(e => e.repeat.Value.Date.Day.Equals(DateTime.Now.Day));
或:
(...).Where(e => e.repeat.Value.Date.Day==DateTime.Now.Day);
,但它不工作。
任何想法?
感谢总干事卡米尔
“它不工作”是非常模糊的,但是目前你'重新检查星期几而不是日期。我会建议使用:
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);
如果'repeat.Value.Date'包含与午夜不同的时间? –
@ArnaudF .:“与午夜不同的时间”是什么意思?我假定'Value'是一个'DateTime',因此'Value.Date'是一天中的'DateTime'。 –
@John:在DateTime中,当比较“2011/01/01 00:00:00 AM”到“2011/01/01 06:00:00 AM”时,结果将是错误的。或者我错过了什么?原来的帖子没有什么是说这不可能发生。 –
比较短日期,确保您的年/月/日的一次拍摄相同的:
(...).Where(e => e.repeat.Value.Date.ToShortDateString() == DateTime.Now.ToShortDateString());
试试这个:
(...).Where(e => (e.repeat >= DateTime.Today) && (e.repeat < DateTime.Today.AddDays(1)))
我喜欢这个,那就是e.repeat中的强大的重复元素。 –
它是可靠的,这可能是决定性的。 –
@Kamil:如果这些帮助你,请将它们标记为已接受。 – TheGwa