using System.Collections.Generic;
public static void Main()
List<int> list = new() { 1, 2, 3 };
var emptyCollection = Enumerable.Empty<IEnumerable<int>>();
var emptyCombination = Enumerable.Empty<int>();
IEnumerable<List<int>> combinations = list
.Aggregate(emptyCollection.Append(emptyCombination),
( acc, next ) => acc.Concat(acc.Select(entry => entry.Append(next))))
.Select(comb => comb.ToList());
foreach (var comb in combinations.OrderBy(c => c.Count).ThenBy(c => c.Sum()))
Console.WriteLine(string.Join(" ", comb));