2011-10-04 141 views
0

我在数据库中有一个名为“repeat”的DateTime字段。我只想记录今天“重复”中的日期。按日期筛选(linq)

我想:

(...).Where(e => e.repeat.Value.Date.Day.Equals(DateTime.Now.Day)); 

或:

(...).Where(e => e.repeat.Value.Date.Day==DateTime.Now.Day); 

,但它不工作。

任何想法?

感谢总干事卡米尔

+0

@Kamil:如果这些帮助你,请将它们标记为已接受。 – TheGwa

回答

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); 
+0

如果'repeat.Value.Date'包含与午夜不同的时间? –

+0

@ArnaudF .:“与午夜不同的时间”是什么意思?我假定'Value'是一个'DateTime',因此'Value.Date'是一天中的'DateTime'。 –

+0

@John:在DateTime中,当比较“2011/01/01 00:00:00 AM”到“2011/01/01 06:00:00 AM”时,结果将是错误的。或者我错过了什么?原来的帖子没有什么是说这不可能发生。 –

0

比较短日期,确保您的年/月/日的一次拍摄相同的:

(...).Where(e => e.repeat.Value.Date.ToShortDateString() == DateTime.Now.ToShortDateString()); 
1

试试这个:

(...).Where(e => (e.repeat >= DateTime.Today) && (e.repeat < DateTime.Today.AddDays(1))) 
+1

我喜欢这个,那就是e.repeat中的强大的重复元素。 –

+0

它是可靠的,这可能是决定性的。 –