LINQ to Entities ne reconnaît pas la méthode ‘System.DateTime ToDateTime (System.Ssortingng)’

J’essaie de convertir une application en EntityFrameWork codefirst. Mon code actuel est

ssortingng 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 ça

LINQ to Entities ne reconnaît pas la méthode ‘System.DateTime ToDateTime (System.Ssortingng)’

S’il vous plaît aider Merci d’avance

quand tu fais ça:

 TransRepository.Entities.Where(x =>Convert.ToDateTime(x.Date) >= dtFrom) 

LINQ to Entities ne peut pas traduire la plupart des méthodes Date .NET (y compris la conversion que vous avez utilisée) en SQL car il n’existe pas de code SQL équivalent. Ce que vous devez faire est de faire ci-dessous:

  DateTime dtFrom = Convert.ToDateTime(sFrom ); TransRepository .Entities.ToList()//forces execution .Where(x =>Convert.ToDateTime(x.Date) >= dtFrom) 

mais attendez que la requête ci-dessus récupère des données entières , et exécute. .Where , dessus, vous ne voulez certainement pas,

simple soultion serait ceci , personnellement, j’aurais fait mon champ Entity comme DateTime et db colonne comme DateTime

mais puisque, votre champ db / Date entité est une chaîne, vous n’avez aucune autre option que celle de changer votre champ dans l’entité et de la firebase database en DateTime , puis de faire la comparaison.

Pourquoi votre colonne de date est-elle une chaîne? Ne devrait-il pas s’agir d’un DateTime ?

Quoi qu’il en soit, si vous essayez d’effectuer des conversions à l’aide de fonctions .NET dans une instruction .Where sur un référentiel d’entités, vous obtiendrez cette erreur.

Votre meilleure option serait de changer cette colonne d’une chaîne à une DateTime et de continuer à partir de là. Si vous le faites, la déclaration .Where serait:

 DateTime dtFrom = Convert.ToDateTime(sFrom ); var something = TransRepository.Entities.Where(x => x.Date >= dtFrom) ; 

/ j’ai eu un problème similaire: j’obtenais une chaîne de recherche et interrogeait une colonne datetime … voir la ligne 4 /

 1)case "Admission_Date": 2)if (!Ssortingng.IsNullOrEmpty(SearchValue)) 3) { 4) DateTime dtFrom = Convert.ToDateTime(SearchValue); wards = from s in db.CORE_DATA_tbl where s.Admit_Date == dtFrom orderby s.ActionType, s.AdmissionLocation select s; } break;