在下面的查詢中,如何刪除detime時間部分的datetime列以獲得唯一的日期?linq查詢不同日期
using (var ctx = new DBConn())
{
var q = ctx.Table.Select(r => r.datetimefield).Distinct();
}
在下面的查詢中,如何刪除detime時間部分的datetime列以獲得唯一的日期?linq查詢不同日期
using (var ctx = new DBConn())
{
var q = ctx.Table.Select(r => r.datetimefield).Distinct();
}
你絆倒的故障與LINQ到SQL或EF(我不知道哪一個你正在使用)。直接的解決方案是使用DateTime.Date
屬性,但是,這在兩個ORM中都不受支持,它不映射到SQL方法。
有兩種解決方法:
查詢急於評價使用ToList
:
var q = ctx.Table.ToList().Select(r => r.datetimefield.Date).Distinct();
創建一個字段只詳細介紹在數據庫中的日期部分。這是我通常的做法,因爲您可以留在數據庫中並在那裏執行查詢。
這個工作增加了r.datetimefield.Value.Date – user285677 2011-03-13 12:45:16
是的,如果'datetimefield'是一個'可空的
其實,有辦法做到這一點,看到這個答案:http://stackoverflow.com/a/11525054/68818 – 2013-02-04 09:44:50
假設r.datetimefield
是一個DateTime,您可以使用DateTime.Date
刪除時間部分:
var q = ctx.Table.Select(r => r.datetimefield.Date).Distinct();
你不能,至少不能用linq-to-sql或EF作爲'Date'屬性不映射到SQL方法。 – Femaref 2011-03-13 12:35:31
日期屬性可通過value.date但我得到的錯誤「指定的類型成員'日期'不支持在LINQ to實體」 – user285677 2011-03-13 12:39:27
是的,這就是我暗示。您不能在查詢中使用Date屬性,因爲EF不會將其映射到SQL方法。我個人認爲這是一個巨大的錯誤。 – Femaref 2011-03-13 12:40:41
這個問題有正確的答案,你想用EntityFunctions.TruncateTime http://stackoverflow.com/questions/11524853/distinct-date-with-linq – 2013-02-04 09:44:27