2017-10-10 12 views
1

私は 'MySQL'を使用して 'WEB API'を作成しました。今私はAPIのURLにserial numberdate timeを渡して、期待される結果を得る。今私がしたいのは、リクエストが送信されたときです。すべてのレコードは10 minutesの中にtimespanのように表示されます。すなわち、送信された時間が10/10/2017T3:15:00である場合、表示されるデータは、+5および-5分、すなわち、3:10:00から3: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

haha​​ ...それは本当ですが他は私と同じです;) – faisal1208