2010-07-06 12 views
8

var islemList = (von isl in entities.Islemler wo (isl.KayitTarihi.Date> = DBAs & & isl. KayitTarihi.Value.Date < = dbit) wählen isl);Linq to Entity erhalten ein Datum von Datetime

Es gibt Fehler: Datum wird nicht in LINQ to Entities unterstützt ... Wie bekomme ich das Datum in linq.

+0

Was ist der Typ von dbas und dbit? Ist es DateTime? Und was ist KayitTarihi.Value ist es Navigationseigenschaft? –

+0

Versuchen Sie es ohne '.Date' und' .Value.Date', wenn Ihr dataType DateTime (nullable) ist. –

Antwort

1

wenn KayitTarihi eine Datumsspalte in DB (und DBAs und dbit Datetime ist), zu verwenden:

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

KayitTarihi ist DateTime, aber ich brauche nur Datum – serkan

+1

Try '((Nullable ) isl.KayitTarihi.Date)'. Nicht sicher, wie si LINQ reagieren wird. Sie könnten auch 'dbas' und' dbit' ändern (wenn sie ohne den Zeitteil sind), so dass Sie den Wert des Datums nicht aus 'KayitTarihi' extrahieren müssen:' ... wo (isl.KayitTarihi> = dbas && isl. KayitTarihi

-1

Die .Date Eigenschaft in Linq to Entities unterstützt wird (obwohl es in anderen Implementierungen unterstützt werden kann von Linq).

Ich weiß, dass Sie nur die Daten vergleichen möchten, aber es gibt kein echtes Problem mit dem Vergleich der Datumsangaben, wenn die DBAS und DBIT-Werte Datumswerte mit Uhrzeit 00:00:00 sind. Sie müssen möglicherweise die Daten ausgleichen oder andere Ungleichheitsprüfungen verwenden, um das richtige Intervall zu erhalten. Der Vergleich funktioniert jedoch wie vorgesehen.

Ich würde persönlich mit Jandeks Lösung gehen.

24
+8

Beachten Sie, dass EntityFunctions jetzt veraltet ist und stattdessen System.Data.Entity.DbFunctions verwendet werden sollte. – Meryovi

+2

* Jetzt * ab EF 6. Die Implementierungen haben sich nicht geändert, es ist einfach eine Umbenennung mit den alten Funktionen, die an die neuen Funktionen delegieren, so dass Sie Ihren bestehenden Code sicher aktualisieren können. Aus der Commit-Nachricht: * "Die Klassen mit den alten Namen delegieren im Grunde nur an die neuen Klassen und werden auch als veraltet markiert, um die Leute in die neuen Klassen zu bringen." * – Stijn

Verwandte Themen