2014-01-22 3 views
9

Как я сравниваю время только DateTime объекта без получения следующихLinq To Sql сравнить время только

Ошибка:

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. 

Мой код:

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

ответ

13

Это ответ!

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

я не получаю DbFunctions. Это дает мне ошибку «Имя DbFunctions не существует в текущем контексте». Должен ли я использовать любое пространство имён? –

+0

Я использую структуру сущности 5. –

-2

Вы пробовали с помощью функция EntityFunctions.TruncateTime (TIME)?

он будет идти следующим образом:

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

Надеется, что это помогает!

+7

Это может быть использовано для сравнения дат ** время игнорируя **, OP просит для сравнения времени только – Habib