2009-11-03 8 views
3

Je veux obtenir la fonction lambda qui interrogera les éléments qui ont été soumis à la dernière minute. Comment spécifier cela?TimeSpan dans les expressions lambda

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

Répondre

6

Si les éléments ont chacun une propriété Date, vous pouvez faire:

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

Vous pouvez mettre le calcul dans l'instruction Where directement, mais il serait recom mis sur chaque article, donc je préfère garder l'heure de départ de la déclaration.

+0

J'ai utilisé ceci pour la raison décrite – zsharp

8

Faites votre choix

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

ou

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

I comme le second. Il semble symétrique avec le => et <=. –

5

Que diriez-vous:

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

Vous vouliez probablement dire 'DateTime.Now.AddMinutes (-1);'? –

+0

Oui, bien sûr, merci de me l'avoir corrigé. –

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

Selon la quantité d'éléments de votre liste vous contient pouvez enregistrer DateTime.Now à une variable, il est donc le même sur toutes les comparaisons ..

+1

Je pense que vous voulez dire '.TotalSeconds' et pas' .Seconds' - ce serait toujours <60. – configurator

+0

Oui, je le fais (mis à jour) - merci! – andyp

+0

c'est l'erreur que j'ai faite – zsharp

Questions connexes