2017-10-10 62 views
1

我使用'MySQL'創建了'WEB API'。現在我在API的URL中傳遞serial numberdate time並獲得預期結果。現在我想要做的是當發送請求時。所有記錄顯示在timespan10 minutes之內。即如果發送的時間是10/10/2017T3:15:00,則所示的數據將是+5和-5分鐘,即在3:10:003:20:00之間,假定日期應該是相同的。網絡API中的LINQ時間減法

要減去時間time.Subtract(...)方法可以使用,但我真的不知道如何減去並添加時間,然後得到結果。

我的控制器代碼看起來像

public HttpResponseMessage GetByMsn(string msn, DateTime dt) 
    { 
     try 
     { 
      return Request.CreateResponse(HttpStatusCode.Found, medEntitites.tj_xhqd.Where(m=>(m.zdjh == msn)).Where(m=> (m.sjsj >= dt)).Select(m=> new { m.zdjh , m.sjsj, m.xhqd }).Distinct()); 
     } 
     catch (Exception ex) 
     { 
      return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex); 
     } 
    } 

注意

的增加和時間的減法是依賴於URL

任何幫助將高度讚賞發送日期時間。

回答

1

如果在提供的日期前後總是5分鐘,只需使用AddMinutes來添加/刪除它。這樣的事情:

public HttpResponseMessage GetByMsn(string msn, DateTime dt) 
{ 
    try 
    {  
     var before = dt.AddMinutes(-5); 
     var after = dt.AddMinutes(5); 

     var result = medEntitites.tj_xhqd 
     .Where(m => 
      m.zdjh == msn && 
      m.sjsj >= before && 
      m.sjsj <= after) 
     .Select(m=> new { m.zdjh , m.sjsj, m.xhqd }).Distinct()); 

     return Request.CreateResponse(HttpStatusCode.Found, result); 
    } 
    catch (Exception ex) 
    { 
     return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex); 
    } 
} 

注意:我不會硬編碼在真實應用程序的5分鐘,雖然。通常這個值會來自你的應用程序的某種配置。如果你像這樣硬編碼的價值和明天的需求變化從5分鐘到10分鐘,你必須編譯和重新部署你的應用程序,這很糟糕。所以記住這一點。

+0

這工作就像一個魅力。是的,我知道,我已經與其他人討論過這個問題,但他們說這樣保持。所以我猜如果其他人對此感到滿意我也是:) – faisal1208

+0

開發者課1:不要相信別人:) – jpgrassi

+0

哈哈...這是真的,但其他人和我一樣;) – faisal1208