2013-02-05 160 views
0

在我的SQL 2008 R2,我有這個表:LINQ的選擇時間與日期+ 1

enter image description here

我已創建了LINQ語法選擇所有時間,除計算機每小時更大:

public IList<LS_CLIENTHORRAIRE> Get_All_Obj(string CLIENT_ID) 
     { 
      try 
      { 
       IList<LS_CLIENTHORRAIRE> LesListe; 
       using (Soft8Exp_ClientEntities oEntite_T = new Soft8Exp_ClientEntities()) 
       { 
        int The_Hour = DateTime.Now.Hour; 
        var query = from o in oEntite_T.LS_CLIENTHORRAIRE where o.CLIENT_ID == CLIENT_ID && o.HORRAIRE > new TimeSpan(The_Hour, 00/*minutes*/, 00/*seconds*/) select o; 
        LesListe = query.ToList(); 
       } 
       return LesListe; 
      } 
      catch (Exception excThrown) 
      { 
       throw new Exception("Err_02", excThrown); 
      } 
     } 

,它是做工精細:

  • 時候到電腦08:00再寄回12:0019:00,
  • 當小時計算機是13:00那麼它返回19:00

但現在我想改變一下日期也計劃:

  • 時候到電腦08:00然後返回12:0019:0005:00
  • 當小時計算機是13:00然後它返回19:0005:00
  • 當小時計算機是20:00然後它返回05:00

任何想法?

我試圖像這樣:

DateTime The_Date = DateTime.Now.Date; 
        var query = from o in oEntite_T.LS_CLIENTHORRAIRE where o.CLIENT_ID == CLIENT_ID && The_Date.Add(o.HORRAIRE) > DateTime.Now select o; 
        LesListe = query.ToList(

);

但遺憾的是它不工作

+2

您的表格中沒有日期信息。這是在另一列嗎? –

+0

不行,只是把現在的日期作爲參考 – user1958628

+1

我不能遵循邏輯。你想要所有小時數大於實際小時數,但總是返回5:00。那是怎麼回事? –

回答

1
var query = oEntite_T.LS_CLIENTHORRAIRE 
       .Where(o => o.CLIENT_ID == CLIENT_ID && 
         (o.HORRAIRE > DateTime.Now.TimeOfDay || 
         o.HORRAIRE.Hours == 5)); 

這將使法行爲像你想。雖然我不明白,爲什麼你要5點回來,儘管它實際上比DateTime.Now = 13:00小。

我認爲你的表格缺少日期信息,這會導致邏輯被破壞。