Я не очень хорошо разбираюсь в Visual Basi c, но вот пример C#, который должен делать то, что вам нужно.
const int maxCount = 100;
const long maxSize = 314572800;
var groups = new List<List<Item>>();
var nextGroup = new List<Item>();
foreach (var item in entries)
{
if (nextGroup.Count > maxCount
|| nextGroup.Sum(x => x.CompressedSize) > maxSize)
{
groups.Add(nextGroup);
nextGroup = new List<Item>();
}
nextGroup.Add(item);
}
groups.Add(nextGroup);
Я не думаю, что существует более простой способ LINQ сделайте это с помощью GroupBy
.
Рекурсия может вызвать переполнение стека для этого и не кажется необходимым.
Вы можете захотеть инкапсулировать это в новый метод расширения в стиле LINQ .