【发布时间】:2018-02-04 05:45:09
【问题描述】:
如何使用 LINQ(使用查询或方法语法)按组计算具有相同汽车名称的汽车总数..?我的表名“Cars”如下所示:
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 辆沃洛夫、6 辆丰田和 3 辆福特。
我应该如何形成它以获得我正在寻找的正确结果?
我试过了
[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;
但是给了我错误的结果。 如果你们能帮助我,我将不胜感激。
【问题讨论】:
-
context.Cars.GroupBy(x => x.CarName).Select(x => new { Name = x.Key, Number = x.Count() }); -
但是如果你在局部视图中使用它,你会想要创建一个具有这两个属性的视图模型(它将是
.Select(x => new yourViewModel { -
@StephenMuecke 谢谢你的回复,但是如果我有 PartialView 的话我就不明白了。我现在有这样的 Viewmodel,public class CarSummeryViewModel { public string CarName { get;放; } 公共 int 状态 { 获取;放; } }
-
所以它将是
context.Cars.GroupBy(x => x.CarName).Select(x => new CarSummeryViewModel { CarName = x.Key, Status = x.Count() });,然后在你的_CarList.cshtml部分你有@model IEnumerable<CarSummeryViewModel>并使用@foreach(var car in Model)来显示项目。 (但Total似乎比Status更合适的属性名称) -
@StephenMuecke 这给了我对 CarName 的印象,我的意思是沃尔沃 = 2,丰田 = 2,福特 =1。它们出现了多少次。但我想要沃尔沃汽车、丰田汽车的状态的总结......所以没有......
标签: sql asp.net-mvc linq asp.net-web-api