12
votes

Daturant (en mois) à Linq

select col1,col2,col3 from table1 
where(DATEDIFF(mm, tblAccount.[State Change Date], GETDATE()) <= 4
I want to convert this sql query to LINQ. but I dont know any DateDiff alternative in LINQ. can you please suggest me?

0 commentaires

4 Réponses :


13
votes

Vous recherchez < Code> SQLMMETHODS.DATEIFFMONSTH .

edit : dans ef4, utilisez Sqlfonctions.Andiff .


5 commentaires

Je suis désolé d'utiliser l'utilisation de l'entité et non Linq à SQL. Comment puis-je le faire en utilisant Linq?


Alors pourquoi avez-vous utilisé la balise LINQ vers SQL?


Fonctions d'entité / Les fonctions canoniques sont une autre option et peut-être une meilleure option dans EF4: msdn.microsoft.com/en-us/library/... . Je crois que le sqlfonctions dépend de l'utilisation de SQL Server en tant que fournisseur de données, Fonctions d'entité ne sont pas. Si je comprends la description sur MSDN correctement ...


@Slanks: J'ai utilisé cette fonction dans la requête ci-dessus, mais cela donne: la date de type de type spécifiée 'Date' n'est pas prise en charge dans Linq aux entités. Seuls les initialisateurs, les membres de l'entité et les propriétés de navigation d'entité sont pris en charge.


Actuellement dans EF6, utilisez dbfonctions. .



8
votes

Mettre de côté votre question initiale pendant un moment, dans votre requête que vous utilisez:

DateTime earliestDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddMonths(-4);
var results = from t in context.table1
              where t.col3 >= earliestDate
              select t;


1 commentaires

C'est une réponse beaucoup plus utile.



7
votes

dans EF6, la classe à utiliser est dbfonctions . Voir, par exemple, dbfonctions .DiffMonths .


0 commentaires

0
votes

J'ai résolu ce problème de manière à une autre manière: j'ai calculé la date de code: xxx

et dans ef modifie la condition: xxx


0 commentaires