> For the complete documentation index, see [llms.txt](https://infinitypbr.gitbook.io/magic-pig-games/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://infinitypbr.gitbook.io/magic-pig-games/game-modules-4/module-documentation/game-module-lists/remove-methods/gameitemobjectlist-remove-methods.md).

# GameItemObjectList Remove() Methods

{% hint style="warning" %}
The `Remove()` methods below do not take into account "Equipment" -- that is, they do not update `Stats` when they are removed. If you plan on removing `ItemObjects` that are active in an "Equipment" list, you'll want to create your own remove methods to handle your inventory appropriately.
{% endhint %}

#### Remove all based on number of `ItemAttributes`

<pre class="language-csharp"><code class="lang-csharp">// If GameItemObject, ItemObject, or itemObjectUid is provided, only those of
// that ItemObject will be removed

// Remove all with exact number of attributes
<strong>public void RemoveAllWithExactlyXAttributes(int amount, ItemObject itemObject)
</strong>public void RemoveAllWithExactlyXAttributes(int amount, GameItemObject gameItemObject)
public void RemoveAllWithExactlyXAttributes(int amount, string itemObjectUid = null)

// Remove all with less than X attributes
public void RemoveAllWithLessThanXAttributes(int amount, ItemObject itemObject)
public void RemoveAllWithLessThanXAttributes(int amount, GameItemObject gameItemObject)
public void RemoveAllWithLessThanXAttributes(int amount, string itemObjectUid = null) 

// Remove all with more than X attributes
public void RemoveAllWithMoreThanXAttributes(int amount, ItemObject itemObject)
public void RemoveAllWithMoreThanXAttributes(int amount, GameItemObject gameItemObject)
public void RemoveAllWithMoreThanXAttributes(int amount, string itemObjectUid = null)

// Remove all with no attributes
public void RemoveAllWithNoAttributes(ItemObject itemObject)
public void RemoveAllWithNoAttributes(GameItemObject gameItemObject)
public void RemoveAllWithNoAttributes(string itemObjectUid = null)
</code></pre>

#### Remove all based on  specific `ItemAttributes`

```csharp
// If itemObjectUid is provided, only those of that ItemObject will be removed

// Remove all with specific ItemAttribute
public void RemoveAllWithAttribute(ItemAttribute attribute, string itemObjectUid = null)
public void RemoveAllWithAttribute(GameItemAttribute gameAttribute, string itemObjectUid = null)
public void RemoveAllWithAttribute(string attributeUid, string itemObjectUid = null)

// Remove all with ALL of the specified ItemAttributes
public void RemoveAllWithAllAttributes(IEnumerable<ItemAttribute> attributes, string itemObjectUid = null)
public void RemoveAllWithAllAttributes(IEnumerable<GameItemAttribute> gameAttributes, string itemObjectUid = null)
public void RemoveAllWithAllAttributes(IEnumerable<string> attributeUids, string itemObjectUid = null)

// Remove all with ANY of the specified ItemAttributes
public void RemoveAllWithAnyAttributes(IEnumerable<ItemAttribute> attributes, string itemObjectUid = null)
public void RemoveAllWithAnyAttributes(IEnumerable<GameItemAttribute> gameAttributes, string itemObjectUid = null)
public void RemoveAllWithAnyAttributes(IEnumerable<string> attributeUids, string itemObjectUid = null)

// Example
ItemAttribute[] itemAttributes = new[] { Rare, Epic, Legendary };
gameItemObjectList.RemoveAllWithAnyAttributes(itemAttributes);
Debug.Log("All your good loot has been removed!");
```

#### Remove duplicates

These methods will remove any duplicates. The single-object methods have an optional `itemObjectUid`, when `null`, will remove any duplicate in the entire list.

There is also an optional `bool` `includeItemAttributes`, which is `false` by default. When `true`, a `GameItemObject` must match both its `Uid()` and its list of `ItemAttributes` to qualify as a duplicate.

```csharp
public void RemoveDuplicates(ItemObject itemObject, bool includeItemAttributes = false)
public void RemoveDuplicates(GameItemObject gameItemObject, bool includeItemAttributes = false)
public void RemoveDuplicates(string itemObjectUid = null, bool includeItemAttributes = false)

// Only check a set of ItemObjects
public void RemoveDuplicates(IEnumerable<ItemObject> itemObjects, bool includeItemAttributes = false)
public void RemoveDuplicates(IEnumerable<GameItemObject> gameItemObjects, bool includeItemAttributes = false)
public void RemoveDuplicates(IEnumerable<string> itemObjectUids, bool includeItemAttributes = false)
```
