首页 > 后端开发 > C++ > 如何正确使用LINQ的GroupBy、Sum、Count来聚合产品数据?

如何正确使用LINQ的GroupBy、Sum、Count来聚合产品数据?

Linda Hamilton
发布: 2025-01-24 16:56:13
原创
287 人浏览过

How to Correctly Use LINQ's GroupBy, Sum, and Count to Aggregate Product Data?

LINQ:GroupBy、Sum和Count

问题描述

您有一组产品数据,需要按产品代码进行分组。对于每个代码,您希望返回一个包含产品名称、产品数量和总价格的对象。您正在使用LINQ的GroupBy和SelectMany函数来实现此目标,但是结果对象中的数量属性始终为1。

解决方案

问题在于SelectMany函数用于处理每个组中的每一项。要解决此问题,请使用Select代替。

<code class="language-csharp">List<resultline> result = Lines
    .GroupBy(l => l.ProductCode)
    .Select(cl => new ResultLine
    {
        ProductName = cl.First().Name,
        Quantity = cl.Count().ToString(),
        Price = cl.Sum(c => c.Price).ToString(),
    })
    .ToList();</code>
登录后复制

替代方案

或者,您可以同时按产品名称和产品代码进行分组,如果给定代码的名称始终相同,则会得到相同的结果。这可以在EF中生成更好的SQL:

<code class="language-csharp">List<resultline> result = Lines
    .GroupBy(l => new { l.ProductCode, l.Name })
    .Select(cl => new ResultLine
    {
        ProductName = cl.First().Name,
        Quantity = cl.Count().ToString(),
        Price = cl.Sum(c => c.Price).ToString(),
    })
    .ToList();</code>
登录后复制

改进数据类型

考虑将Quantity和Price属性分别更改为int和decimal类型,因为这更能反映这些值的性质。

以上是如何正确使用LINQ的GroupBy、Sum、Count来聚合产品数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板