Remove objcet out of scene

Hello everyone,
i’m making a card game that when you choose a card from hand, the bot will do the similar and compare card numbers. And if we win the round, bot’ card will be removed from its hand but when i try to you ‘Remove’ in bot card which are implemented in List Collection, the card object still show up on scene, i try to destroy it but it don’t work. This is my code

{
public void OnMouseDown()
{

if(deck.playerDeck.Contains(gameObject))
{

    foreach (var c in CardDatabase_2.cardDatabase_2)
    {
        if (cardFront == c.Value)
        {
            Deck_Game2.playerScore += c.Key;
            break;
        }
    } 

    Card spriteRenderer = deck.enemyDeck[Random.Range(0, deck.enemyDeck.Count - 1)].GetComponent<Card>();
    Sprite enemySprite = spriteRenderer.cardFront;
    print(enemySprite.name);

    foreach (var c in CardDatabase_2.cardDatabase_2)
    {
        if (enemySprite == c.Value)
        {
            Deck_Game2.enemyScore += c.Key;
            break;
        }
    }

    for (int i = 0; i < deck.playerDeck.Count; i++)
    {
        SpriteRenderer spr = deck.playerDeck[i].GetComponent<SpriteRenderer>();
        Sprite temp = spr.sprite;
        if (temp == cardFront)
        {
            deck.playerDeck.RemoveAt(i);
            
            break;
        }
    }



    for (int i = 0; i < deck.enemyDeck.Count; i++)
    {
        Card spr = deck.enemyDeck[i].GetComponent<Card>();
        Sprite temp = spr.cardFront;
        if (enemySprite == temp)
        {
            deck.enemyDeck.RemoveAt(i);
            enemyDel = deck.enemyDeck[i];
            break;
        }
    }

    if (deck.playerDeck.Count > 0)
    {
        deck.SetUp(deck.playerDeck, deck.PosP, false);
    }

    if (deck.enemyDeck.Count > 0)
    {
        deck.SetUp(deck.enemyDeck, deck.PosE, false);
    }

    Destroy(gameObject);
    enemyDel.SetActive(false);

}

}

}

A solution will help me a lot guys!!!

Hey mate

I’m not quite sure but I’ll give it a crack

I think what you need to do is maybe identify the thing you want to destroy specifically as part of your loops and destroy that?

Maybe something like this:

GameObject cardToRemove = null;
    
for (int i = 0; i < deck.playerDeck.Count; i++)
{
        SpriteRenderer spr = deck.playerDeck[i].GetComponent<SpriteRenderer>();
        Sprite temp = spr.sprite;
        if (temp == cardFront)
        {
            deck.playerDeck.RemoveAt(i);
            cardToRemove = deck.playerDeck[i];
            break;
        }
}

Destroy(cardToRemove);