public IEnumerable> GetPowerSet(IEnumerable input) { var seed = new List>() { Enumerable.Empty() } as IEnumerable>; return input.Aggregate(seed, (a, b) => a.Concat(a.Select(x => x.Concat(new List() { b })))); }