Maison >développement back-end >C++ >Comment puis-je aplatir un IEnumerable imbriqué dans LINQ ?

Comment puis-je aplatir un IEnumerable imbriqué dans LINQ ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-26 15:51:09982parcourir

How Can I Flatten a Nested IEnumerable in LINQ?

ienumerable

Dans Linq, vous pouvez rencontrer le cas de l'iénumation imbriqué, et vous devez "flatter" pour obtenir une seule ienuation fusionnée. Lorsque l'iénumer interne contient le même type d'élément que l'iénumabilité externe, le processus plat devient nécessaire.

Étude de cas:

Considérez l'exemple fourni:

Dans cet exemple, Ilist représente une ienumeration imbriquée, chacune étant une liste

. L'objectif est de fusionner toutes ces listes imbriquées dans une seule liste
<code>IEnumerable<List<int>> iList = from number in
    (from no in Method() select no) select number;</code>
.

Solution: selectMany ()

linq fournit la méthode SelectMany (), qui est spécialement utilisée pour montrer la collection iennumable d'aplatissement. Il traverse l'insumer externe et projeté chaque élément de jeu interne dans le nouveau ienumerable.

Pour obtenir les résultats requis, vous pouvez utiliser selectMany ():

Dans ce code, la méthode SELECTIONMANY () obtient chaque liste contenue dans ILIST (représentée par la variable I) et relie l'élément de la liste à la nouvelle exposition nommée inutile Nommé résultat.

Exemple:

<code>var result = iList.SelectMany(i => i);</code>

Grâce à cet exposition, le tableau imbriqué d'origine [1,2,3,4] et [5,6,7] seront combinés en un seul tableau comme prévu [1,2,3,4,5,6 , 7].

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