2016-12-04 4 views
0

У меня есть этот код:C# Показать 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 })); 
     } 

вопрос, как я могу показать все элементы из IEnumerable<IEnumerable<int>> result

+0

Что вы подразумеваете под "показом"? –

+0

Soemthing like Console.WriteLine (результат [n]); – mdieod

ответ

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

Просто используйте SelectMany, чтобы сгладить результат.

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

Если вы намерены повторять несколько раз, вы также должны добавить .ToLost() для повышения производительности.

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

Я чувствую себя как '(x => x)' становится после комментариев, что это похоже на смайлик:] – Slai

Смежные вопросы