Maison >développement back-end >C++ >Comment puis-je diviser une collection en plusieurs parties à l'aide de LINQ ?

Comment puis-je diviser une collection en plusieurs parties à l'aide de LINQ ?

DDD
DDDoriginal
2025-01-20 03:41:09692parcourir

How Can I Split a Collection into Multiple Parts Using LINQ?

Diviser une collection en parties à l'aide de LINQ

Cet article explore un problème courant dans l'analyse et la programmation de données : diviser un ensemble en n sous-ensembles différents.

Solution LINQ :

LINQ fournit une solution simple et élégante pour cette tâche. La méthode d'extension suivante Split<T> permet d'obtenir le résultat attendu :

<code class="language-csharp">static class LinqExtensions
{
    public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> list, int parts)
    {
        int i = 0;
        var splits = from item in list
                     group item by i++ % parts into part
                     select part.AsEnumerable();
        return splits;
    }
}</code>

Instructions :

    La méthode
  • Split<T> accepte deux paramètres : la collection d'entrée (list) et le nombre de parties en lesquelles la diviser (parts).
  • Il initialise le compteur i à zéro, qui servira d'index de l'élément groupé.
  • Cette méthode utilise la syntaxe group by pour créer des groupes basés sur le modulo de i et parts. Cela garantit que les éléments sont attribués à différentes parties en fonction de leur position dans la collection d'origine.
  • Enfin, le résultat est projeté pour produire une collection de IEnumerable<T> objets, chaque objet représentant une partie de la collection originale.

Cette solution fournit un moyen pratique et lisible de diviser une collection en sous-ensembles à l'aide de LINQ.

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