2010-07-06 4 views
8

var islemList = (ISL dans entities.Islemler où (isl.KayitTarihi.Date> = dbas & & ISL. KayitTarihi.Value.Date < = dbit) sélectionnez ISL)LINQ to Entity obtenir une date de DateTime

Il donne une erreur: la date n'est pas prise en charge dans LINQ to Entities ... Comment puis-je obtenir la date dans linq.

+0

Quel est le type de dbas et dbit? Est-ce DateTime? Et qu'est-ce que KayitTarihi.Value est la propriété de navigation? –

+0

Essayez-le sans '.Date' et' .Value.Date' si votre dataType est DateTime (nullable). –

Répondre

1

si KayitTarihi est une colonne de date dans le DB (et dbas et dbit sont DateTime), utilisez:

var islemList = (from isl in entities.Islemler where (isl.KayitTarihi >= dbas && isl.KayitTarihi <= dbit) select isl); 
+0

KayitTarihi est DateTime mais j'ai juste besoin Date – serkan

+1

Essayez '((Nullable ) isl.KayitTarihi.Date)'. Je ne sais pas comment réagir si LINQ. Vous pouvez également modifier 'dbas' et' dbit' (s'ils sont sans la partie temps), vous n'avez donc pas besoin d'extraire la valeur Date de 'KayitTarihi':' ... where (isl.KayitTarihi> = dbas && isl. KayitTarihi

-1

La propriété .Date n'est pas pris en charge dans LINQ to Entities (bien qu'il puisse être pris en charge dans d'autres implémentations de Linq).

Je me rends compte que vous voulez seulement comparer les dates, mais il n'y a pas vraiment de problème avec la comparaison des dates si les valeurs dbas et dbit sont des datetime avec le temps 00:00:00. Vous devrez peut-être décaler les dates ou utiliser d'autres contrôles d'inégalité pour obtenir l'intervalle approprié, mais la comparaison fonctionnera comme vous le souhaitez.

Je voudrais personnellement aller avec la solution de Jandek.

24
+8

Notez que EntityFunctions est désormais obsolète et que System.Data.Entity.DbFunctions doit être utilisé à la place. – Meryovi

+2

* Maintenant * étant EF 6 et suivants. Les implémentations n'ont pas changé, c'est simplement un renommage avec les anciennes fonctions déléguant aux nouvelles fonctions, ainsi vous pouvez mettre à jour votre code existant en toute sécurité. À partir du message de validation: * "Les classes avec les anciens noms sont simplement déléguées aux nouvelles classes et sont également marquées comme obsolètes pour aider les personnes à se déplacer vers les nouvelles classes." * – Stijn

Questions connexes