我有这段代码:
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 :(得分: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();