2016-12-04 1 views
0

Je possède ce code:C# Afficher les éléments IEnumerable

static void Main(string[] args) 
     { 
      IEnumerable<IEnumerable<int>> result = GetCombinations(Enumerable.Range(1, 3), 2); 

     } 

     static IEnumerable<IEnumerable<T>> GetCombinations<T>(IEnumerable<T> list, int length) 
     { 
      if (length == 1) return list.Select(t => new T[] { t }); 

      return GetCombinations(list, length - 1) 
       .SelectMany(t => list, (t1, t2) => t1.Concat(new T[] { t2 })); 
     } 

La question est, comment je peux montrer tous les éléments de IEnumerable<IEnumerable<int>> result

+0

Qu'entendez-vous par "show"? –

+0

Soemthing comme Console.WriteLine (résultat [n]); – mdieod

Répondre

1
IEnumerable<IEnumerable<int>> resultList= GetCombinations(Enumerable.Range(1, 3), 2); 
foreach (var result in resultList) 
{ 
    foreach(var element in result) 
    { 
     Console.WriteLine(element); 
    }  
} 
2

Il suffit d'utiliser SelectMany pour aplatir le résultat.

IEnumerable<IEnumerable<int>> result = GetCombinations(Enumerable.Range(1, 3), 2); 
foreach (var combination in resultList.SelectMany(x => x)) 
    Console.WriteLine(combination); 

Si vous avez l'intention de répéter plusieurs fois, vous devez également ajouter .ToLost() pour améliorer les performances.

IEnumerable<IEnumerable<int>> result = GetCombinations(Enumerable.Range(1, 3), 2).ToList(); 
+0

Je sens que '(x => x)' devient une chose après les commentaires que ça ressemble à une émoticône:] – Slai