I'm trying to break up a C# List<InventoryItem>
into multiple lists based on two different values: InventoryItem.name
and InventoryItem.isStackable
.
I want the list to be broken up into multiple lists for the purpose of populating my UI with the data - while keeping non-stackable items in their own list (one item per item slot in UI terms.)
If this is the input:
{
InventoryItem - name:apple, stackable:true
InventoryItem - name:apple, stackable:true
InventoryItem - name:carrot, stackable:true
InventoryItem - name:knife, stackable:false
InventoryItem - name:knife, stackable:false
}
I should get this output:
{
InventoryItem - name:apple, stackable:true
InventoryItem - name:apple, stackable:true
}
{
InventoryItem - name:carrot, stackable:true
}
{
InventoryItem - name:knife, stackable:false
}
{
InventoryItem - name:knife, stackable:false
}
I'm successfully separating by name alone (see below), but I'm not sure how to take isStackable into account. I'm also using LINQ which I'd prefer to avoid if possible.
var itemsByType = new List<List<InventoryItem>>();
var inventoryByItem = inventory.GroupBy(x => x.name);
foreach(var v in inventoryByItem)
{
var itemList = v.ToList();
itemsByType.Add(itemList);
}