2012-11-01 27 views
0

我有一個數據庫表字段是可以爲空的日期時間。出於某種原因,我可以在下面的查詢工作。比較一個可空的日期時間使用Linq到EF的日期時間

var requests = _db.Requests 
       .Where(r => r.processedDate.Value == processDate); 

我100%確定我有四個匹配的日期,但我一直沒有收回任何東西。我試過這個查詢的各種變體,但沒有成功。

更新

比較不工作的原因是,我傳遞的processDate通過JavaScript函數,這樣

function Reprocess(processDate, spanid) { 
    if(confirm('Are you sure you want to re-process this batch?')) { 
     $.ajax({ 
      type: "Post", 
      url: "?ajaxFunction=Reprocess", 
      data: processDate, 
      success: function (data, textStatus, jqXHR) { 
       $(spanid).html(data); 
      } 
     }); 
    } 
} 

當我這樣做,我不得不轉換DateTime到一個字符串,以便將它傳遞給我的函數。當我把它轉換成一個字符串時,它會變成幾秒鐘,因此失去了毫秒。這就是爲什麼Linq查詢找不到任何匹配(因爲14毫秒)。

如何通過JavaScript傳遞完整的日期時間值?或者我必須在日期,時間,分鐘和秒數上進行比較嗎?

+0

發佈匹配日期,也許。 –

+0

查詢看起來正確。請發佈您面臨的問題。 – SaravananArumugam

+0

是完全相同的日期(日期,時間,時區等?) – Jason

回答

1

如果你將其轉換爲字符串的服務器端,它到達你的JavaScript之前,那就試試這個:

C#

// Make sure processDateStr gets to your JavaScript function 
string processDateStr = processDate.ToString("o"); 

然後當你得到的字符串值回服務器再次使用此恢復相同的值:

DateTime processDate = DateTime.Parse(processDateStr, null, DateTimeStyles.RoundtripKind); 

該值將恢復到原來的原樣。

EDIT

的 「o」 的格式說明是往返說明符。你可以閱讀更多關於它here on MSDN

+0

這工作 - 謝謝!比比較從年到秒的所有內容要好得多。 –