2011-04-03 4 views
1

Je la requête suivantefiltrer une requête par date

var query = 
        from f in _db.Production 
        join g in _db.Run on f.show equals g.Production.show 


        select new ViewProductions { 
          Venuename = g.venue, 
          Showname = f.show, 

          StartDate = g.startDate, 
          EndDate = g.endDate 


        }; 

     return View(query); 

Comment puis-je ajouter une clause where qui dit

Si la date de départ est dans les 3 prochains mois à partir d'aujourd'hui?

Merci

Mise à jour

code de travail

var now = DateTime.UtcNow; 
     var limit = now.AddDays(90); 
     var query = 
     from f in _db.Production 
     join g in _db.Run on f.show equals g.Production.show 
     where g.endDate >= now && g.startDate <= limit 


        select new ViewProductions 
        { 
         Venuename = g.venue, 
         Showname = f.show, 
         StartDate = g.startDate, 
         EndDate = g.endDate 
        }; 



     return View(query); 

Merci encore pour votre aide.

Répondre

2

Comme vous ne pouvez pas utiliser des méthodes DateTime.Add* dans LINQ to SQL ou Entity Framework, vous devez utiliser des variables:

var now = DateTime.UtcNow; 
var limit = now.AddDays(90); 
var query = from f in _db.Production 
      join g in _db.Run on f.show equals g.Production.show 
       where g.StartDate >= now && g.StartDate <= limit 
       select new ViewProductions { 
         Venuename = g.venue, 
         Showname = f.show, 
         StartDate = g.startDate, 
         EndDate = g.endDate  
        }; 
+0

Cela n'a pas produit de données soit –

+0

bien, je ne peux pas deviner votre schéma. – Femaref

+0

Merci pour votre code. Je l'ai maintenant travailler juste besoin de changer les dates. J'ai mis à jour ma question pour inclure le bon code. –

0

Ajoutez cette ligne yo votre requête:

var query = 
from f in _db.Production 
join g in _db.Run on f.show equals g.Production.show 
where g.startDate > DateTime.Today && 
g.startDate < DateTime.Today.Add(TimeSpan.FromDays(90)) 
.... 
2

Depuis c'est Linq à Sql/entités vous devrez calculer la date d'abord, puis utilisez dans la requête:

DateTime futureDate = DateTime.Now.AddMonths(3); 
from f in _db.Production 
join g in _db.Run on f.show equals g.Production.show 
where g.StartDate <= futureDate && g.StartDate >= DateTime.Now 
... 
+0

Il est de 3 mois et non 30 journées. – Aliostad

+0

Trois mois ne sont certainement pas 30 jours. – Femaref

+0

typo - corrigé que – BrokenGlass

Questions connexes