首页 >后端开发 >C++ >如何通过LINQ中的多列分组数据?

如何通过LINQ中的多列分组数据?

DDD
DDD原创
2025-01-31 15:31:09288浏览

How to Group Data by Multiple Columns in LINQ?

LINQ 多列分组详解

在 SQL 中,可以使用 GROUP BY 子句根据多个列对数据进行分组。例如:

<code class="language-sql">SELECT * FROM <tablename> GROUP BY <column1>,<column2></code>

如何在 LINQ 中实现类似的功能呢?

使用匿名类型

一种方法是使用匿名类型。以下是一个示例:

<code class="language-csharp">var groupedData = x.GroupBy(x => new { x.Column1, x.Column2 });</code>

这段代码根据 x 序列中元素的 Column1Column2 属性对元素进行分组,为每个唯一的值组合创建一个匿名类型。

数据示例

考虑以下数据结构:

<code class="language-csharp">public class QuantityBreakdown
{
    public int MaterialID { get; set; }
    public int ProductID { get; set; }
    public float Quantity { get; set; }
}</code>

以及以下 INSERT 语句:

<code class="language-sql">INSERT INTO @QuantityBreakdown (MaterialID, ProductID, Quantity)
SELECT MaterialID, ProductID, SUM(Quantity)
FROM @Transactions
GROUP BY MaterialID, ProductID</code>

可以使用以下代码将此转换为 LINQ:

<code class="language-csharp">var groupedTransactions = transactions
    .GroupBy(t => new { t.MaterialID, t.ProductID })
    .Select(g => new QuantityBreakdown
    {
        MaterialID = g.Key.MaterialID,
        ProductID = g.Key.ProductID,
        Quantity = g.Sum(t => t.Quantity)
    });</code>

此 LINQ 表达式按 MaterialIDProductID 对事务进行分组,然后计算每个组的 Quantity 值之和。

以上是如何通过LINQ中的多列分组数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn