> 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

v4.0

{% 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)
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://infinitypbr.gitbook.io/magic-pig-games/game-modules-4/module-documentation/game-module-lists/remove-methods/gameitemobjectlist-remove-methods.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
