C# Language SelectMany


Exemple

La méthode linq SelectMany «aplatit» un IEnumerable<IEnumerable<T>> en un IEnumerable<T> . Tous les éléments T des instances IEnumerable contenus dans la source IEnumerable seront combinés en un seul IEnumerable .

var words = new [] { "a,b,c", "d,e", "f" };
var splitAndCombine = words.SelectMany(x => x.Split(','));
// returns { "a", "b", "c", "d", "e", "f" }

Si vous utilisez une fonction de sélecteur qui transforme les éléments d'entrée en séquences, le résultat sera les éléments de ces séquences renvoyés un par un.

Notez que, contrairement à Select() , le nombre d'éléments dans la sortie ne doit pas nécessairement être identique à celui de l'entrée.

Plus exemple du monde réel

class School
{
    public Student[] Students { get; set; }
}

class Student 
{
    public string Name { get; set; }
}    
  
var schools = new [] {
    new School(){ Students = new [] { new Student { Name="Bob"}, new Student { Name="Jack"} }},
    new School(){ Students = new [] { new Student { Name="Jim"}, new Student { Name="John"} }}
};
               
var allStudents = schools.SelectMany(s=> s.Students);
             
foreach(var student in allStudents)
{
    Console.WriteLine(student.Name);
}

Sortie:

Bob
Jack
Jim
John

Démo en direct sur .NET Fiddle