I want to damage only once

I have a 2D grenade that I want damage 2d enemies.

void Update()
{
    if (Time.time > _birthTime + _ageTime)
    {
        DamageEnemiesInRange();
        Destroy(gameObject);
    }
}

private void DamageEnemiesInRange()
{
    var allEnemies = FindObjectsOfType<NEnemy>();

    var enemiesInRange =
        allEnemies.Where(x => Vector2.Distance(x.transform.position, transform.position) < damageRange).ToList();
    foreach (var enemy in enemiesInRange)
    {
        enemy.GetComponent<NEnemy>().TakeDamage(10);
    }
}

this is damage code and how I call it in update. I wanna damage enemies in grenade range after 5 seconds and destroy the grenade.
The problem is enemy’s health is 100 and the grenade damage is 10 but the enemy destroy with only one grenade and I thing the grenade damage 10 times.

this is enemy code :

public void TakeDamage(int damage)
{
    _currentHealth -= damage;
    var normalizedHealth = _currentHealth / (float)maxHealth;
    healthBar.NormalizedHealth = normalizedHealth;

    if (_currentHealth <= 0)
    {
        Kill();
    }
} 

private void Kill()
{
    Destroy(gameObject);
}

Either there are multiple grenades, or there’s a misunderstanding of instance variables with an abuse of the static keyword. Regardless, you need to do some debugging to figure out what’s happening.

Note that the .ToList() is redundant here and only causing extra allocations.
.GetComponent<NEnemy>() is also redundant, as you already have a collection of NEnemy.