2010-09-30 20 views
0

我有一張桌子,上面有CreatedDate列。我想按照數據庫中最長的行進行排序,但需要通過從DateTime.Now中減去它來確定天數。我如何訂購Linq中的DateTime差異?

我明白,這是可行的只是由CreatedDate訂貨,但我需要做的還不止這些。

我需要按他們已經在一段時間內使用的次數越來越量最受歡迎的項目中的項目,有效。

所以我想要做的是首先確定的天數,並通過次數是鴻溝此之後的每個項目已被使用。

步驟1)

orderby (DateTime.Now.Subtract(t.CreatedDate.Value).Days) 

步驟2)

orderby (t.UsedCount/DateTime.Now.Subtract(t.CreatedDate.Value).Days) 

這將導致以下錯誤:

Method 'System.TimeSpan Subtract(System.DateTime)' has no supported translation to SQL.

回答

2

奇怪的是, 「減法()」 不工作,但是Minus呢。 嘗試:

orderby (t.UsedCount/(DateTime.Now - t.CreatedDate.Value).Days) 

(使用 「主」 數據庫測試中LINQPad)

from sp in Spt_monitors 
orderby sp.Io_busy/(DateTime.Now - sp.Lastrun).Days 
select sp