2017-11-01 10 views
0

を取得します(外部キー)を operDtをint型:日時AspNetCore 1.1グループ化とカウントは、私は、次の表を持っているオブジェクト

は私が合計数を計算する必要があります

:同上 enter image description here リポジトリなしsimillar結果を得るためにhospitalId

でグループ化された缶の行の

コントローラ:

[HttpGet("bydate")] 
     public IActionResult GetCanMin(DateTime startdt, DateTime endd) 
     { 
      var res = this._unitOfWork.Cans.GetCansMin(startdt, endd); 
      return Ok(res); 
     } 

郵便配達して要求を渡すとき:

http://localhost:56964/api/cansdatas/bydate?startdt=2016-01-01&enddt=2016-12-31

代わりの結果の配列を受けて、私は空のオブジェクトを取得します.... あなたは助けることができます?

答えて

1

呼び出しているメソッドが非同期なので、返されたタスクを待つ必要があります。

[HttpGet("bydate")] 
    public async Task<IActionResult> GetCanMin(DateTime startdt, DateTime endd) 
    { 
     var res = await this._unitOfWork.Cans.GetCansMin(startdt, endd); 
     return Ok(res); 
    } 
+0

へのリポジトリ

public class CancelledCan { public int HospitalId { get; set; } public int NumberofCancelled { get; set; } } 

を作成し、私はタスク GetCansMin(のDateTime startdt、DateTimeの非同期(async)公衆にリポジトリを変更しましたenddt) { (appContext)を使用しています。 { return await appContext.Cans.Whe ToArrayAsync(g => new); ToArrayAsync(g => new); ToArrayAsync();を選択します。 (); }; }エラー、暗黙のうちにvoid変数を代入することはできません。 –

+0

ああ、そうです。しかし、それはあなたのためにそれを解決しましたか?この修正の前にエラーが発生しました。 – Allrameest

+0

いいえ、それは仕事をしなかった –

0

ビューモデルが変更非同期メソッドを受け入れるように

public async Task<List<CancelledCan>> GetCansMin(DateTime startdt, DateTime enddt) 
     { 
      using (appContext) 
      { 
       return await appContext.Cans.Where(c => c.OperDt > startdt && c.OperDt < enddt).GroupBy(c => c.HospitalId).OrderBy(c=>c.Count()) 
         .Select(g => new CancelledCan 
         { 
          HospitalId = g.Key, 
          NumberofCancelled = g.Count() 
         }).ToListAsync(); 
      }; 
     } 
関連する問題