J'ai une liste de numéros en double:LINQ: GroupBy avec un nombre maximum dans chaque groupe
Enumerable.Range(1,3).Select(o => Enumerable.Repeat(o, 3)).SelectMany(o => o)
// {1,1,1,2,2,2,3,3,3}
Je groupe les et obtenir quantité de occurance:
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
Ce que je vraiment besoin est de limiter la quantité par groupe à un certain nombre. Si la limite est de 2 le résultat du regroupement ci-dessus serait:
Qty Num
2 1
1 1
2 2
1 2
2 3
1 3
Donc, si Quantité = 10 et la limite est de 4, le résultat est de 3 lignes (4, 4, 2). La quantité de chaque nombre n'est pas égale comme dans l'exemple. La limite de quantité spécifiée est la même pour toute la liste (ne diffère pas en fonction du nombre).
Merci
Je suis simplement curieux. À quoi sert cet algorithme? – Luke101
J'ai besoin de cracher des données dans ce format pour une machine CNC. – JKJKJK