Can this foreach loop be improved? Can the below foreach loop be improved?  Since I use the same method twice, maybe use continue or break?

int? index = null;
int count = 0;
foreach (Break b in breaks)
{
    if (index.HasValue)
    {
        if (index == count)
            b.Remove();
    }
    else
    {
        b.Remove();
    }
    count++;
}


So I turned it into this:

foreach (Break b in breaks)
{
    if ((index.HasValue &amp;&amp; index == count) || !index.HasValue)
    {
        b.Remove();
    }
    count++;
}


Which is the same.  Any other optimizations possible?
How about removing the loop at all like:

if (!index.HasValue)
{
     breaks.Clear();
}
else
{
     breaks.RemoveAt((int)index);
}


if you want/need to keep the loop, i would change your second way like:

foreach (Break b in breaks)
{
    if (!index.HasValue || index == count)
    {
        b.Remove();
    }
    count++;
}