Very often I need something like that:
foreach (Line line in lines) { if (line.FullfilsCertainConditions()) { lines.Remove(line) } }
Also you can just use while loop.
int i = 0; while(i < lines.Count) { if (lines[i].FullfilsCertainConditions()) { lines.RemoveAt(i); } else {i++;} }