Хорошо, теперь я понимаю желаемые результаты:
public static class Helpers
{
// Adjust this to use trimming, avoid nullity etc if you you want
private static readonly Predicate<string>
NonBlankLinePredicate = x => x.Length != 0;
public static List<string> TrimList(this List<string> list)
{
int start = list.FindIndex(NonBlankLinePredicate);
int end = list.FindLastIndex(NonBlankLinePredicate);
// Either start and end are both -1, or neither is
if (start == -1)
{
return new List<string>();
}
return list.GetRange(start, end - start + 1);
}
}
Обратите внимание, что не не изменяет существующий список - он возвращает новый список с требуемым содержимым. Непонятно, какое именно поведение вы хотите, учитывая, что вы дали методу тип возвращаемого значения, но ваш пример вызывает его без использования результата. Лично я предпочитаю методы без побочных эффектов, хотя, возможно, стоит сменить название:)