Das Formatierungsdatum in der Linq-to-Entities-Abfrage verursacht eine Ausnahme

8

Ich habe eine Entity-Klasse mit Datum-Uhrzeit-Feld, ich möchte ein anderes Datum-Zeit-Feld auswählen und die Drop-down-Liste füllen.

Der folgende Code gibt mir den Fehler:

%Vor%

Fehlermeldung:

  

LINQ to Entities erkennt nicht   die Methode 'System.String   ToString (System.String) 'Methode und   Diese Methode kann nicht in übersetzt werden   ein Speicherausdruck.

Wie kann ich diese Fehlermeldung korrigieren?

Danke SR

    
sfgroups 30.04.2011, 03:58
quelle

4 Antworten

13

Denken Sie daran, dass Ihre Abfrage in SQL übersetzt und an die Datenbank gesendet wird. Ihr Versuch, das Datum zu formatieren, wird in der Abfrage nicht unterstützt, weshalb Sie diese bestimmte Fehlermeldung sehen. Sie müssen die Ergebnisse abrufen und dann formatieren, nachdem die Daten materialisiert wurden.

Eine Option besteht darin, einfach das Datum so auszuwählen, wie es ist. Wenn Sie über das Ergebnis iterieren, formatieren Sie es so, wie Sie es zu Ihrer Liste hinzufügen. Sie können aber auch die Konstruktion der Liste mit dem formatierten Datum in einer einzigen Anweisung erreichen, indem Sie die Methodenverkettung verwenden.

%Vor%

Die Methode .AsEnumerable() wird die Ausführung des ersten Teils der Abfrage gegen die Datenbank erzwingen und der Rest wird mit den Ergebnissen im Speicher arbeiten.

    
Anthony Pegram 30.04.2011, 04:00
quelle
8

Hier ist eine Alternative:

%Vor%

Anscheinend DateName("MM", ..) buchstabiert den Namen des Monats, wobei DatePart("mm", ..) einen numerischen Wert liefert, also StringConvert( ) , aber dieser link puffert das Ergebnis mit Leerzeichen, also die .Trim() .

Wie Anthony Pegram oben gesagt hat, geschieht dies in der Datenbank und nicht in C # ( .AsEnumerable() zieht alle Daten lokal nach C #, also stellen Sie sicher, dass Sie Daten filtern, bevor Sie sie verwenden.)

Offensichtlich möchten Sie die Ausgabe leicht an die Art yyyy-MM anpassen und entweder DatePart für die Ziffer oder DateName für den Monatsnamen verwenden.

    
Zachary Scott 03.05.2013 17:24
quelle
1

Hier ist eine Alternative, die das übliche TT / MM / JJJJ-Format verwendet. Bestätigt in SQL Server 2012 mit Entity Framework 5

%Vor%

Erzeugt Datumsangaben im Format TT / MM / JJJJ mit führenden Nullen.

    
Moeri 26.06.2014 12:55
quelle
0

Ich habe einen Workaround verwendet, um die Formate mit yyyy und MM manuell zu erstellen. Ich möchte es hier erwähnen, wenn es jemandem (zumindest vorübergehend) helfen könnte:

%Vor%

das macht das Format yyyy-MM

    
Shadi Namrouti 23.08.2016 01:20
quelle