2013-09-30 18 views
7

ich Datetime-Variable officeStartTime die als Datetime-Wert haltenZeit Brauchen Sie Datumzeit nur von

officeStartTime = {9/24/2013 10:00:00 AM}

und ich habe Modul CHECKINOUT die userid, checktime und andere Eigenschaften enthalten.

Nun, was ich will, ist die Liste von CHECKINOUT Einträgen zu erhalten, deren Zeit Teil von checktime größer als Zeit Teil officeStartTime.

Ich versuche:

var checklist= con.CHECKINOUTs.Where(x => x.CHECKTIME.TimeOfDay > officeStartTime.TimeOfDay);

checklist enthält die folgenden Fehler angezeigt werden:

{"The specified type member 'TimeOfDay' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported."}.

Es wird TimeOfDay in LINQ zu Entities nicht unterstützt, wenn ja, wie kann ich in LINQ für Zeit Teil von Datetime überprüfen. Gibt es einen anderen Weg, dies zu tun? Bitte schlage mir vor, was ich machen soll.

Vielen Dank.

+0

Wenn die Antwort für Sie hilfreich war - bitte, bitte. Wenn es die Lösung war - upvote und update – MikroDel

+0

Ich postete diesen Kommentar - Ursache wie für heute - Sie haben 8 Antwort und 0 von ihnen akzeptiert, aber fast alle haben Antworten. – MikroDel

+0

@MikroDel Ich versuche nach Ihrer Antwort, und ich werde für Ihre Antwort upvote. – link2jagann

Antwort

11

Verwenden

CreateTime(hour, minute, second) 

von Date and Time Canonical Functions

+0

Vielen Dank, es funktioniert. – link2jagann

+0

@ link2jagann - wenn es klappt - bitte auch die Antwort annehmen! =) – MikroDel

+0

ok warum nicht ..... Und es wäre mir auch ein Vergnügen, wenn du mir helfen würdest, mehr Ansehen zu bekommen ....... – link2jagann

9

Verwenden EntityFunctions.CreateTime Methode:

fliessend Syntax:

con.CHECKINOUTs.Where(c => EntityFunctions.CreateTime(c.CHECKTIME.Hour, c.CHECKTIME.Minute, c.CHECKTIME.Second) > officeStartTime.TimeOfDay) 
+1

danke für deine detail lösung. – link2jagann

+4

Beachten Sie, dass sich dies für Entity Framework 6 in 'DbFunctions.CreateTime' geändert hat –

4

So wie ein Heads-up, wenn yo Sie verwenden Entity Framework Version 6.0.0.0, EntityFunctions ist OUTDATED.

Die gleiche Funktionalität kann unter DbFunctions gefunden werden.

Also für Ihre Antwort, EF6 verwenden, würde es so aussehen:

con.CHECKINOUTs.Where(c => DbFunctions.CreateTime(c.CHECKTIME.Hour, c.CHECKTIME.Minute, c.CHECKTIME.Second) > officeStartTime.TimeOfDay) 

hoffe, das hilft!