using System.Collections.Generic;
public static IEnumerable<IEnumerable<T>> GetPowerSetOfLength<T>(IList<T> list, int length)
return from m in Enumerable.Range(0, 1 << list.Count)
let setResult = ( from i in Enumerable.Range(0, list.Count)
where (m & (1 << i)) != 0
where setResult.Count==length
public static void Main()
Console.WriteLine(string.Join(", " , GetPowerSetOfLength<int>(new[]{1,2,3,4,5,6,7,8,9},3).Select(b=>"{ " + string.Join(" ,",b) +" }")));