2017-02-14 33 views
-1

我正在開發一個MVC應用程序。我在SQL表中有一個時間戳列。我有一個查詢從數據庫中檢索所有數據。我正在使用LINQ。如何將sql時間戳分配給linq查詢中的c#變量?

下面是我的查詢:

obj = (from c in entityObject.NCT_ProcessAudit.AsNoTracking() 
     join proc in entityObject.NCT_Process_Settings on c.process_id equals proc.ID 
     select new returnObject 
     { 
      ID = c.ID, 
      process_id = c.process_id, 
      icon_id = c.icon_id, 
      dispaly_order = c.dispaly_order, 
      updated = c.updated, //c. updated timestamp in sql and updated is datetime as public Nullable<System.DateTime> updated { get; set; } 
      output = c.output 
     }).OrderByDescending(a => a.updated).ToList(); 

當我運行上面的查詢,我得到以下錯誤

指定的強制轉換從物化「System.Byte []」類型爲可空「 System.DateTime'類型無效。

我可以在這裏得到一些幫助。任何幫助,將不勝感激。謝謝。

+1

:-)取代。 returnObject類中更新的類型是什麼? – A3006

+0

謝謝。 public Nullable updated {get;組; } –

+0

你真的不應該命名你的類'returnObject' –

回答

0

正如我在評論中寫道的:
SQL timesatamp類型與其名字可能不一樣。 它實際上只是一個通常用於行版本控制的運行編號。

就你的情況而言,通過字段的名稱(updated),我想你想知道該行何時更新,因此,最好使用datetime作爲字段的類型。

所有這一切的方式是寫在MSDN:

那是一個數據庫中公開自動生成的,唯一的二進制數字的數據類型。時間戳通常用作版本標記錶行的機制。存儲大小是8個字節。時間戳記數據類型只是一個遞增數字,並不保留日期或時間。要記錄日期或時間,請使用日期時間數據類型。

在最近版本的SqlServer這種類型被廢棄和rowversion