LINQ to entities ne reconnaît pas la méthode " du Système.DateTime ToDateTime(Système D'.String)' méthode
Je suis en train de convertir une application à EntityFrameWork codefirst.
Mon présent code est
string sFrom ="26/12/2013";
select * FROM Trans where CONVERT(datetime, Date, 105) >= CONVERT(datetime,'" + sFrom + "',105)
Et j'ai essayé
DateTime dtFrom = Convert.ToDateTime(sFrom );
TransRepository.Entities.Where(x =>Convert.ToDateTime(x.Date) >= dtFrom)
Mais j'ai une erreur comme ceci
LINQ to entities ne reconnaît pas la méthode " du Système.DateTime
ToDateTime(Système D'.String)' méthode
S'il vous plaît aider
Merci d'avance
- double possible de gros problème dans la conversion de chaîne de caractères de type datetime à l'aide de linq-to-entités
- J'ai trouvé ceci pour être une solution simple sans passer par beaucoup de tracas. l'Utilisation SqlFunctions.DateAdd avec un intervalle de 0
Vous devez vous connecter pour publier un commentaire.
quand vous faites cela:
LINQ to entities ne peut pas traduire la plupart .NET Date de méthodes (y compris le moulage-vous utilisé) dans SQL car il n'y a pas d'équivalent SQL.
Ce que vous devez faire est de faire ci-dessous:
mais attendez la requête ci-dessus va chercher ensemble de données, et d'effectuer
.Where
sur elle, certainement vous ne voulez pas que,simple soultion serait cette,
personnellement, j'aurais fait mon champ Entité comme
DateTime
et db colonne commeDateTime
mais depuis, votre db/Entité
Date
champ est une chaîne, vous n'avez pas d'autre option, plutôt que de changer votre champ dans l'entité de base de données et àDateTime
et ensuite faire la comparaisonPourquoi votre colonne date d'une chaîne de caractères? Ne devrait-elle pas être un
DateTime
?Peu importe, si vous essayez d'effectuer les conversions à l'aide .NET des fonctions de dans un .Où l'instruction à l'encontre d'un référentiel d'entités, vous obtiendrez cette erreur.
Votre meilleure option serait de changer la colonne à partir d'une chaîne DateTime et de procéder à partir de là. Si vous le faites, le
.Where
déclaration serait:/j'ai eu un problème similaire où je recevais une chaîne de recherche et d'interrogation d'une colonne datetime... voir la ligne 4/
Prendre le convertir une partie de linq déclaration et de le conserver dans une variable, comme ceci:
et de l'utilisation de cette variable dans le linq déclaration.