2014-01-22 43 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不存在於當前上下文中。」我必須使用任何命名空間int嗎? –

+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