2013-05-14 2 views
0

J'ai un DataTable avec 5 colonnes de type int, string et DateTime. J'ai écrit une requête LINQ pour filtrer les enregistrements par date. Comment puis-je obtenir des enregistrements d'aujourd'hui et d'hier?Comment interroger des enregistrements en fonction de la date

var Data = _dtAll.AsEnumerable() 
      .Where(datas => datas.Field<DateTime>("Date") == DateTime.Now.Date) 
      .Select(datas => new { ---}) 

Je ne reçois pas de dossiers. Mon dossier est le 14/05/2013 à 10h00. Je n'ai pas besoin d'interroger par le temps, je dois interroger seulement par date. Toute aide appriciée.

Répondre

0

Vous utilisez == qui ne correspondent 14/05/2013 12:22 (temps d'affichage)

Utilisation:

var Data = _dtAll.AsEnumerable().Where(datas => datas.Field("Date") <= DateTime.Now.Date).Select(datas => new { ---}) 

qui va obtenir toute date avant 12:22 ou utiliser && et spécifiez une autre condition, par exemple:

var Data = _dtAll.AsEnumerable().Where(datas => datas.Field("Date") <= DateTime.Now.Date && datas.Field("Date") >= '2013-05-14 09:00').Select(datas => new { ---}) 

Remarque: Vous pouvez également utiliser DateTime.Now.AddHours(-5) plutôt que le code dur 2013-05-14

+0

Merci, Got it ** pour aujourd'hui. ** var données = _dtAll.AsEnumerable() Où (données => datas.Field ("date")> = DateTime.Now.AddDays (-1) && datas.Field ("Date") <= DateTime.Now.AddDays (1)). Sélectionnez (datas => new {-}); ** Pour Hier: ** var données = _dtAll.AsEnumerable() Où (données => datas.Field ("Date")> = DateTime.Now.AddDays (-2) && datas.Field . ("Date") <= DateTime.Now.AddDays (-1)). Sélectionnez (datas => new {-}); – charan

1

Les dates d'hier et d'aujourd'hui sont les dates entre minuit hier (y compris) et demain à minuit (sauf):

var upperBound = DateTime.Today.AddDays(1); 
var lowerBound = DateTime.Today.AddDays(-1); 

var Data = _dtAll.AsEnumerable() 
      .Where(datas => datas.Field<DateTime>("Date") < upperBound) 
         && datas.Field<DateTime>("Date") >= lowerBound) 
      .Select(datas => new { ---}) 
0

Avez-vous essayé cette ?:

var Data = from datas in _dtAll.AsEnumerable() 
     let diff = (DateTime.Now.Date - datas.Field<DateTime>("Date").Date) 
     where diff.Days >= 0 && diff.Days <= 1 
     select new { ---} 
Questions connexes