【问题标题】:Count total sum of the same product name in my ASP.NET MVC Project计算我的 ASP.NET MVC 项目中相同产品名称的总和
【发布时间】: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 =&gt; x.CarName).Select(x =&gt; new { Name = x.Key, Number = x.Count() });
  • 但是如果你在局部视图中使用它,你会想要创建一个具有这两个属性的视图模型(它将是.Select(x =&gt; new yourViewModel {
  • @StephenMuecke 谢谢你的回复,但是如果我有 PartialView 的话我就不明白了。我现在有这样的 Viewmodel,public class CarSummeryViewModel { public string CarName { get;放; } 公共 int 状态 { 获取;放; } }
  • 所以它将是context.Cars.GroupBy(x =&gt; x.CarName).Select(x =&gt; new CarSummeryViewModel { CarName = x.Key, Status = x.Count() });,然后在你的_CarList.cshtml部分你有@model IEnumerable&lt;CarSummeryViewModel&gt;并使用@foreach(var car in Model)来显示项目。 (但Total 似乎比Status 更合适的属性名称)
  • @StephenMuecke 这给了我对 CarName 的印象,我的意思是沃尔沃 = 2,丰田 = 2,福特 =1。它们出现了多少次。但我想要沃尔沃汽车、丰田汽车的状态的总结......所以没有......

标签: sql asp.net-mvc linq asp.net-web-api


【解决方案1】:

您查询的分组是正确的。

从组中选择计数通常带有一个匿名类:

return PartialView(
    "_CarList",
    await context.Cars
        .GroupBy(m =>m.CarName)
        .Select(g => new { CarName = g.Key, Count = g.Sum(c => c.Status) })
        .ToListAsync()
);

【讨论】:

    【解决方案2】:
    from car in context.Cars 
    group car by new { car.CarName } into carGrouping
    select new {
      Name=carGrouping.Key,
      Count = carGrouping.Count()
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      • 2015-05-26
      • 2021-08-24
      • 1970-01-01
      相关资源
      最近更新 更多