2014-01-22 4 views
9

Wie vergleiche ich Zeit nur von Datetime-Objekt, ohne sich die folgendeLinq To Sql vergleichen Zeit nur

Fehler:

An exception of type 'System.NotSupportedException' occurred in mscorlib.dll but was not handled in user code Additional information: The specified type member 'TimeOfDay' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported. 

Mein Code:

var date = DateTime.Parse(query.DueTime); 
entities = entities.Where(r => r.DueTime.TimeOfDay.Equals(date.TimeOfDay)); 

Antwort

13

Dies ist die Antwort!

var date = DateTime.Parse(query.DueTime); 
var time = date.TimeOfDay; 
entities = entities.Where(r => DbFunctions.CreateTime(r.DueTime.Hour, r.DueTime.Minute, r.DueTime.Second) == time); 
+0

ich DbFunctions bin nicht zu vergleichen Zeit bekommen. Es gibt mir den Fehler "Der Name DbFunctions existiert nicht im aktuellen Kontext." Muss ich irgendeinen Namespace darin benutzen? –

+0

Ich verwende Entity Framework 5. –

-2

Haben Sie versucht, die Verwendung von Funktion EntityFunctions.TruncateTime (TIME)?

es wie folgt gehen:

var date = DateTime.Parse(query.DueTime); 
entities = entities.Where(r => EntityFunctions.TruncateTime(r.DueTime) == EntityFunctions.TruncateTime(date)); 

hoffe, das hilft!

+7

Diese Daten für den Vergleich ** ignorieren Zeit verwendet würde **, fragt OP nur – Habib