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?
4 Réponses :
Vous recherchez < Code> SQLMMETHODS.DATEIFFMONSTH CODE> . P>
edit fort>: dans ef4, utilisez Sqlfonctions.Andiff code>
. P>
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 code> dépend de l'utilisation de SQL Server en tant que fournisseur de données,
Fonctions d'entité code> 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.
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;
C'est une réponse beaucoup plus utile.
dans EF6, la classe à utiliser est dbfonctions code>
. Voir, par exemple, dbfonctions .DiffMonths code>
. P>
J'ai résolu ce problème de manière à une autre manière: j'ai calculé la date de code: et dans ef modifie la condition: p>