2009-11-03 118 views
3

我想获得lambda函数,它将查询在最后一分钟提交的项目。如何指定这个?lambda表达式中的TimeSpan

var items= Items.Where(i=>DateTime.Now.Subtract(i.Date)...) 

回答

6

如果每个项目有一个日期属性,你可以这样做:

DateTime startDate = DateTime.Now - new TimeSpan(0,1,0); 
var items = Items.Where(i => i.Date >= startDate); 

你可以把数学直接进入Where语句,但它会得到推荐对每个项目都进行了调整,所以我宁愿将开始时间保留在声明之外。

+0

我用这个原因描述 – zsharp 2009-11-04 02:35:18

8

任你选

var items= Items.Where(i => DateTime.Now.Subtract(i.Date).TotalMinutes < 1) 

var items= Items.Where(i => DateTime.Now.Subtract(i.Date).TotalSeconds <= 60) 
+1

我像第二个一样。它看起来与=>和<=对称。 – 2009-11-04 00:46:34

5

如何:

DateTime cutoffPoint = DateTime.Now.AddMinutes(-1); 
var items = Items.Where(i => (i.Date >= cutoffPoint)); 
+1

你可能是指'DateTime.Now.AddMinutes(-1);'? – 2009-11-03 22:45:57

+0

是的,当然,谢谢你为我纠正它。 – 2009-11-03 23:29:10

2
var items = Items.Where(i => DateTime.Now.Subtract(i.Date).TotalSeconds <= 60); 

根据您的名单多少项目包含你可能想DateTime.Now保存到一个变量,所以它在所有的比较一样..

+1

我认为你的意思是'.TotalSeconds'而不是'.Seconds' - 总是<60. – configurator 2009-11-03 22:47:58

+0

是的,我确实(更新了) - 谢谢! – andyp 2009-11-03 22:48:50

+0

这是我犯的错误 – zsharp 2009-11-03 23:05:54