Casting String als DateTime in LINQ

9

Ich habe eine Tabelle mit folgendem Format.

%Vor%

Ich muss alle PIDs abrufen, wobei Vorname beginnend mit J und Monat von DOB 10 ist.

In meinem Code lese ich diese in DataTable in C # und versuchte dann, LINQ zu verwenden, um die gewünschten Ergebnisse abzurufen. Dies ist nur ein Beispiel. Diese Labels können alles sein, was der Benutzer definiert.

mit LINQ Ich bin in der Lage, alle PIDs abzurufen, wo Vorname mit J beginnt, aber jedes Mal, wenn ich versuchte, Wert für DOB zu werfen, erhalte ich einen nicht gültigen Fehler. Ich kann den Spaltentyp in der Datenbank nicht ändern, da Value beliebige Arten von Informationen enthalten kann.

Hier ist ein Teil meines Codes. Ich bin neu bei LINQ und versuche immer noch, darüber herauszufinden.

%Vor%     
user1760153 19.10.2012, 18:16
quelle

2 Antworten

3

Da nicht alle Elemente in der Spalte Wert der Tabelle in DateTime konvertierbar sind, wird bei ungültigen Konvertierungen ein Fehler auftreten. Sie können eine Klausel hinzufügen, die zuerst prüft, ob der Wert ein DateTime ist, und nur wenn dies der Fall ist, wird sie konvertiert und überprüft die Eigenschaft .Month .

%Vor%

Um die Lesbarkeit zu verbessern, könnten Sie dies auch in eine separate Methode extrahieren:

%Vor%     
goric 19.10.2012, 18:21
quelle
2

Sie werden am Ende im Speicher filtrieren, was nicht sehr effizient ist.

Wählen Sie also zuerst Ihre Daten

%Vor%

Dann filtern Sie die Daten

%Vor%     
Robin V. 19.10.2012 18:31
quelle

Tags und Links