Very often I need something like that:
foreach (Line line in lines) { if (line.FullfilsCertainConditions()) { lines.Remove(line) } }
You could simply replace original list with filtered one:
lines = lines.Where(line => line.FullfilsCertainConditions()).ToList();