Maison >développement back-end >C++ >Comment regrouper les données par plusieurs colonnes dans LINQ?

Comment regrouper les données par plusieurs colonnes dans LINQ?

DDD
DDDoriginal
2025-01-31 15:31:09286parcourir

How to Group Data by Multiple Columns in LINQ?

Linq plusieurs groupes de groupes en détail

Dans SQL, vous pouvez utiliser des clauses

pour regrouper les données en fonction de plusieurs colonnes. Par exemple:

GROUP BY

Comment implémenter des fonctions similaires dans LINQ?
<code class="language-sql">SELECT * FROM <tablename> GROUP BY <column1>,<column2></code>

Utilisez un type anonyme

Une méthode consiste à utiliser le type anonyme. Ce qui suit est un exemple:

Ce code est groupé en fonction des attributs

et
<code class="language-csharp">var groupedData = x.GroupBy(x => new { x.Column1, x.Column2 });</code>
des éléments de la séquence

pour créer un type anonyme pour chaque combinaison unique de valeur. x Column1 Exemple de données Column2

Considérez la structure de données suivante:

et la déclaration d'insertion suivante:

<code class="language-csharp">public class QuantityBreakdown
{
    public int MaterialID { get; set; }
    public int ProductID { get; set; }
    public float Quantity { get; set; }
}</code>
Vous pouvez utiliser le code suivant pour convertir cela en linq:

<code class="language-sql">INSERT INTO @QuantityBreakdown (MaterialID, ProductID, Quantity)
SELECT MaterialID, ProductID, SUM(Quantity)
FROM @Transactions
GROUP BY MaterialID, ProductID</code>
Cette expression linq est payée selon

et

, puis calcule la somme de la valeur
<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>
de chaque groupe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn