C#显示IEnumerable元素

时间:2016-12-04 02:07:31

标签: 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

中的所有元素

1 个答案:

答案 0 :(得分: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();