2017-08-26 44 views
1

如何計算使用LINQ(使用查詢或方法語法)的同一汽車名稱的汽車總量。我的表名「汽車總動員」看起來像以下:在我的ASP.NET MVC項目中計算同一產品名稱的總數

CarId CarName Color Status 
1  Volvo Red  2 
2  Toyota Black 1 
3  Volvo White 5 
4  Ford  Blue  3 
5  Toyota Silver 5 

我想造成這樣的(汽車的名稱和狀態的夏日):

Volvo 7 
Toyota 6 
Ford 3 

在這個結果我有7個Volovs,6個豐田和3個Fords。
我應該如何構建它才能獲得我正在尋找的正確結果? 我試圖

[HttpGet] 
     public async Task<ActionResult> GetSumOfCars() 
     { 
      using (context) 
      { 
       return (PartialView("_CarList", await context.Cars.GroupBy(m =>m.CarName).Count????.ToListAsync())); 
      } 

     } 

或LINQ(使用查詢語法)

var _Results = from Cars in ??? 
     Count(Status) 
       groupedby CarName 
       select Status; 

但GIV​​S我錯誤的結果。 如果你們能幫助我,我將不勝感激。

+1

'context.Cars.GroupBy(X => x.CarName)。選擇(X =>新的{名稱= X .Key,Number = x.Count()});' –

+1

但是,如果你在局部視圖中使用它,你將需要創建一個具有這兩個屬性的視圖模型(它將是'.Select(x => new yourViewModel {' –

+0

@StephenMuecke謝謝你的迴應,但我不明白,如果我有PartialView ..我現在有我的Viewmodel這樣,公共類CarSummeryViewModel { public st環CarName {get;組; } public int Status {get;組; } } –

回答

2

查詢的部分組是正確的。

選自選擇計數通常有一個匿名類:

return PartialView(
    "_CarList", 
    await context.Cars 
     .GroupBy(m =>m.CarName) 
     .Select(g => new { CarName = g.Key, Count = g.Sum(c => c.Status) }) 
     .ToListAsync() 
); 
1
from car in context.Cars 
group car by new { car.CarName } into carGrouping 
select new { 
    Name=carGrouping.Key, 
    Count = carGrouping.Count() 
};