As Title.Используя Groupby для группировки списка, а затем группируйте их снова, а затем на основе количества
Например, у меня есть список, который содержит 10 пунктов.
Id Name GroupId
1 abc 123
2 abc1 124
3 abc2 125
4 abc3 126
5 abc4 123
6 abc5 123
7 abc6 124
8 abc7 125
9 abc8 127
10 abc9 124
Var groups = items.OrderBy(m => m.GroupId).GroupBy(o => o.GroupId);
Тогда у меня есть 5 групп.
Группа1 (123): {1, 5, 6}
Группа2 (124): {2, 7, 10}
Group3 (125): {3, 8}
Group4 (126): {4}
Group5 (127): {9}
Теперь я хочу, чтобы перегруппировать их на основе максимального количества новой группы.
например: если maxQuantity = 4
newGroup1: {1,5,6,4} (4 происходит потому, что group2 и group3 не может группа внутри newGroup1) "Они имеют больше чем 1 деталь и newGroup1 только может вставить 1 пункт."
newGroup2: {2,7,10,9} (такое же объяснение, как newGroup1)
newGroup3: {3,8} (только осталось 2 пунктов, то они имеют в группу вместе.)
Любая идея по кодированию? Я трачу 8 часов на сидячее кресло, чтобы подумать об этой проблеме и все еще рассчитывать.
* Другой случай, если maxQuantity = 2
newGroup1: {1, 5}
newGroup2: {6, 4}
newGroup3: {2, 7}
newGroup4: {10, 9}
newGroup5: {3, 8}
Объяснение так же, как верхний пример
Я немного смущен о вашем правиле, почему не может '' NewGroup1''' {1,5,6,9} '? (9 вместо 4) –
Я думаю, что это то, где вам нужно оставить linq и пойти «Old-Fashioned» – Sayse
@ Сейз не очень, я думаю, что это «родная мода». –