2013-09-21 78 views
0

有沒有辦法讓linq查詢返回日期時間的日期部分。我嘗試了所有我能找到的建議,所有這些建議都會在運行時產生錯誤。這是每個錯誤消息一起查詢的只是選擇部分(查詢其餘的偉大工程):從SQL Server CE日期時間使用linq-to-entities返回唯一日期

select new { d.id, d.date.Value.Date }; 

指定類型的成員「日期」不支持LINQ到實體。僅支持初始化程序,實體成員和實體導航屬性。

select new { d.id, date=EntityFunctions.TruncateTime(d.date) }; 

的功能不受SQL Server精簡認可。 [功能= TRUNCATETIME,數據類型(如果已知)=名稱]

select new { d.id, date=d.date.Value.Month + "/" + d.date.Value.Day }; 

無法轉換的類型 'System.Int32' 爲類型 'System.Object的'。 LINQ to Entities僅支持投射實體數據模型基元類型。

select new { d.id, date=d.date.Value.Month.ToString() + "/" + d.date.Value.Day.ToString() }; 

LINQ實體無法識別方法「System.String的ToString()」方法,和這種方法不能被翻譯成表達商店。

select new { d.id, date=String.Concat(d.date.Value.Month, "/")}; 

LINQ實體無法識別方法 'System.String CONCAT(System.Object的,System.Object的)' 方法,和這種方法不能被翻譯成表達商店。

感謝您的幫助!

回答

0
select new { 
    d.id, 
    date = SqlFunctions.DatePart("m", d.date) + "/" + SqlFunctions.DatePart("d", d.date) 
}; 

它會給你一個字符串month/day模式。

但我會去如下:

(from r in row 
... 
select new { d.id, date = d.date.Value }) 
.AsEnumerable() 
.Select(x => new { x.id, x.date.Date }); 

它會選擇從數據庫全部datetime和移動日期,只選擇到LINQ到對象查詢。

+0

SqlFunctions.DatePart():該函數只能從LINQ調用到實體。第二個返回日期和時間,所有時間都設置爲12:00:x.date.Value.Date – user2802450

+0

This Works!感謝百萬MarcunJuraszek !!。Select(x => new {x.id,date = x.date.Value.ToShortDateString()}); – user2802450

相關問題