2012-09-05 13 views
1

我想檢查一個DateTime已經在我的分貝相等。檢查,如果日期是使用LINQ到EF

我爲了得到更好的理解這是怎麼回事下面打散的代碼,但是,儘管我盡了最大努力,dateChecks總是會返回一個空列表。

var MyDate = DateTime.Now; 

    foreach (var milestone in mtMilestone.Milestones) 
    { 

     var checkIfAlreadyPulled = _ipdb.JsonDataReleases. 
      Where(x => x.ReleaseId == mtMilestone.ReleaseId).ToList(); 

     var dateChecks = checkIfAlreadyPulled. 
      Where(x => EntityFunctions.Equals(x.LastUpdated, MyDate)).ToList(); 

     if (!dateChecks.Any()) 
     { 
      /* do stuff what this does it it makes a new entry into the JsonDataReleases 
      db using MyDate as the new LastUpdated value. */ 
     } 

     /* Does more unrelated stuff... */ 

    } 

編輯:所以我想通了!

原來,當DateTime.Now正在保存在SQL數據庫的LASTUPDATED值,它切斷了毫秒。

 var now = DateTime.Now; 
     var MyDate= new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second); 

回答

1

如果您LastUpdated場存儲日期&時候,你Where條款將只選擇與您的MyDate同樣確切日期&時間的項目。如果你只是比較日期時,你需要在.Date每側比較:

var dateChecks = checkIfAlreadyPulled. 
    Where(x => x.LastUpdated.Date == MyDate.Date).ToList(); 
+0

我寧願它是儘可能具體,所以比較DateTime是否被罰款。 (是既充滿datetime對象) – Robodude

+0

因此,如果'LastUpdated'時間爲9:01.23432323,你的'MyDate'場是要特別要求該日期?如果是這樣,那麼你的代碼按預期工作。如果沒有,請提供'MyDate'字段和'LastUpdated'中的值的一些示例。 –

+0

根據你說什麼,我做了一些修改,以檢查並確保值是正確的,現在我很困惑。我要更新這篇文章的附加信息。 – Robodude