Maison >développement back-end >C++ >Comment utiliser LINQ pour diviser une liste en sublilistes en fonction de l'indice des éléments?

Comment utiliser LINQ pour diviser une liste en sublilistes en fonction de l'indice des éléments?

Linda Hamilton
Linda Hamiltonoriginal
2025-02-01 22:26:14566parcourir

How Can LINQ Be Used to Split a List into Sublists Based on Item Index?

Divisez la liste en utilisant LINQ en un sous-jististe

Il y a un grand nombre de listes, et vous souhaitez le diviser en plus petit et plus facile à manipuler. Linq (Language Integrated Query) est un outil puissant qui peut facilement y parvenir.

Affectation:

Comment utilisez-vous l'index

des éléments comme un caractère distinct et diviser la liste en plusieurs listes de points distinctes? Par exemple, s'il y a 13 listes, vous souhaitez diviser en cinq sous-statures pour trois éléments.

Solution:

Les fonctions personnalisées utilisant LINQ pour exécuter cette tâche sont présentées ci-dessous.

<code class="language-csharp">public static List<List<T>> Split<T>(IList<T> source)
{
    return source
        .Select((x, i) => new { Index = i, Value = x })
        .GroupBy(x => x.Index / 3)
        .Select(x => x.Select(v => v.Value).ToList())
        .ToList();
}</code>

Explication:

  1. Groupe sur les éléments avec des index: Sélectionner la méthode crée des objets anonymes avec chaque valeur et index de chaque élément. Ensuite, les groupes de méthode groupby de ces objets en fonction de la multiplication de l'index 3 (la taille de la sous-liste souhaitée).
  2. Convertir en une liste de groupe: Sélectionner la méthode dans GroupBy convertit chaque groupe en une liste.
  3. Conversion de Liste: Enfin, la méthode Tolist convertit ienumerable & lt;
Dans l'exemple fourni, [a, g, e, w, p, s, q, f, f, f, y, i, m, c, c, c, c, c, c, il est divisé en g, e], [w, p, s], [q, f, x], [y, i, m], [c]].

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