2011-04-08 4 views
0

Je le code suivant:ASP.NET MVC SQL

public IList<ProductionRuns> List() 
     { 
      var Shows3Months = (from s in _db.ProductionRuns 
           where s.startDate <= DATEADD(month, 3, GETDATE()) and s.endDate > = GETDATE() select s); 

      return Shows3Months.ToList(); 
     } 

L'idée est qu'il affichera une liste de productions pour les 3 prochains mois afin qu'il compare à la date de début de production et date de fin de la date actuelle. Quelqu'un peut-il m'aider à corriger la déclaration SQL? Merci

Répondre

2

Ce n'est pas SQL, c'est une expression de compréhension LINQ: je pense que vous avez vos langues confuses. Restez en C# et votre modèle, ou exécutez SQL sur la base de données.

En C# (avec quelques devinettes pour remplir le modèle) Je pense que votre expression doit être quelque chose comme:

var d1 = DateTime.Today.AddMonths(-3); 

from s in _db.ProductionRuns 
where s.startDate <= d1 && s.endDate >= DateTime.Today 
select s 

EDIT: Date précalculer si LINQ to SQL ne pas essayer de le traduire à SQL.

+0

Cela ne fonctionnera pas car AddMonth n'est pas supporté par linq to sql – archil

+0

@archil OK, donc juste besoin de pré-calculer. – Richard

+0

oui, c'est vrai :) – archil

3
public IList<ProductionRuns> List() 
     { 
      DateTime startDate = DateTime.Today.AddMonths(-3); 
      DateTime endDate = DateTime.Today; 

      var Shows3Months = (from s in _db.ProductionRuns 
           where s.startDate <= startDate and s.endDate >= endDate select s); 

      return Shows3Months.ToList(); 
     }