2013-09-30 14 views
7

mam datetime zmienną officeStartTime które posiadają wartość datetime jakoGet czas tylko DateTime

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

i mam moduł CHECKINOUT które zawierają userid, checktime i inne właściwości.

Teraz chcę uzyskać listę wpisów CHECKINOUT, których część czasu checktime jest większa niż część czasu officeStartTime.

Staram:

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

checklist zawiera następujący komunikat o błędzie jest wyświetlany:

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

Mówi, że TimeOfDay nie jest obsługiwany w LINQ do jednostek, jeśli tak, to jak mogę sprawdzić część czasu w datetime w LINQ. Czy jest jakiś inny sposób na zrobienie tego? Proszę, zasugeruj mi, co mam zrobić.

Dziękuję.

+0

, jeśli odpowiedź była dla Ciebie pomocna - przekaż ją proszę. Gdyby to było rozwiązanie - przejęcie i aktualizacja – MikroDel

+0

zamieściłem ten komentarz - ponieważ na dzisiaj - masz 8 odpowiedzi, a 0 z nich akceptowanych, ale prawie wszystkie mają odpowiedzi. – MikroDel

+0

@MikroDel Próbuję zgodnie z twoją odpowiedzią, a ja postaram się odpowiedzieć na twoją odpowiedź. – link2jagann

Odpowiedz

9

Zastosowanie EntityFunctions.CreateTime metoda:

Fluent składni:

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

dziękuję za szczegółowe rozwiązanie. – link2jagann

+4

Należy zauważyć, że dla Entity Framework 6 zmieniono to na 'DbFunctions.CreateTime' –

4

tylko jako heads-up, jeśli yo używasz Entity Framework Version 6.0.0.0, EntityFunctions jest OUTDATED.

Ta sama funkcja znajduje się pod DbFunctions.

Więc za odpowiedź, używając EF6, to będzie wyglądać następująco:

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

Nadzieja to pomaga!