Mam listę duplikatów numerów:LINQ: GroupBy z maksymalnej liczby w każdej grupie
Enumerable.Range(1,3).Select(o => Enumerable.Repeat(o, 3)).SelectMany(o => o)
// {1,1,1,2,2,2,3,3,3}
I Grupa nich i dostać ilość wystąpieniu:
Enumerable.Range(1,3).Select(o => Enumerable.Repeat(o, 3)).SelectMany(o => o)
.GroupBy(o => o).Select(o => new { Qty = o.Count(), Num = o.Key })
Qty Num
3 1
3 2
3 3
Co naprawdę potrzebne jest ograniczenie ilość na grupę do pewnej liczby. Jeśli granica wynosi 2 wynika z powyższej grupy to:
Qty Num
2 1
1 1
2 2
1 2
2 3
1 3
Tak więc, jeśli Ilość = 10, a granica wynosi 4, wynik 3 rzędy (4, 4, 2). Ilość każdej liczby nie jest równa, jak w przykładzie. Określony limit ilości jest taki sam dla całej listy (nie różni się w zależności od liczby).
Dzięki
Jestem po prostu ciekawy. Do czego służy ten algorytm? – Luke101
Muszę wypluć dane w tym formacie dla maszyny CNC. – JKJKJK