2010-03-01 203 views
0

我有這樣的代碼:比較的日期與LINQ

i.SpesaVitto = db.TDP_NotaSpeseSezB.Where(p => p.GiornoFine == null && 
       ((DateTime)p.Giorno).Date == ((DateTime)i.Data).Date && 
       p.MissioneID == missioneID).Sum(p => p.Costo); 

如果我啓動它,我得到這個錯誤:

The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported. 

我怎麼能比較日期時間字段沒有時間部分

謝謝

+0

您正在使用什麼數據庫系統? – Gabe 2010-03-01 15:17:15

回答

1

嗯,這肯定不是做最有效的方式,但你可以嘗試這樣的:

i.SpesaVitto = db.TDP_NotaSpeseSezB.Where(p => p.GiornoFine == null && 
      (new DateTime((p.Giorno as DateTime).Year, (p.Giorno as DateTime).Month, (p.Giorno as DateTime).Day) == (new DateTime((i.Data as DateTime).Year, (i.Data as DateTime).Month, (i.Data as DateTime).Day) && 
      p.MissioneID == missioneID).Sum(p => p.Costo); 

根據要求,我可能會實現更乾淨更快的東西,但這取決於日期如何存儲在數據庫中。

您的問題
0

看看這個question它看起來像語法錯誤可能在你的SQL,而不是在你的LINQ。在這個問題提問者寫:

SQL ------ 
Select 
EmployeeNameColumn 
From 
EmployeeTable 
WHERE StartDateColumn.Date <= GETDATE() //Today 
SQL ------ 

當他們應該寫:

SQL ------ 
Select 
EmployeeNameColumn 
From 
EmployeeTable 
WHERE StartDateColumn <= GETDATE() //Today 
SQL -