Как убрать со списка элементы после определенного?

370
09 декабря 2016, 08:59

Есть список

List<string> lst = new List<string>(){"киев","москва","токио","БЕРЛИН","тегеран"};

Как убрать из него элементы которые идут после элемента, у которого все символы заглавные. Т.е. убрать БЕРЛИН(так как у него все буквы заглавные) и тегеран

Я знаю как сделать сравнение - а не все ли символы в строки заглавные?

lst.Where(x=>x.IsUpper()==x)...

Однако не совсем понятно как удалять этот и последующий элементы.

Answer 1

Where здесь не очень подходить так как возвращает "список"(IEnumerable<string>) результатов, лучше использовать First:

int index = lst.IndexOf(lst.First(x=>x.IsUpper()==x));

А еще лучше сделать так

int index = lst.FindIndex(x=>x.IsUpper()==x);

Так как нам нужен индекс, а не сам элемент списка. Ну и удаление:

if (index > -1)  { lst.RemoveRange(index, lst.Count - index);  }
Answer 2

Можно использовать метод TakeWhile - он выбирает все элементы, пока не сработает условие.

List<string> lst = new List<string>() { "киев", "москва", "токио", "БЕРЛИН", "тегеран" };
lst = lst.TakeWhile(s => s.ToUpper() != s).ToList();
READ ALSO
c# Unit tests написать в лог

c# Unit tests написать в лог

Как писать в окно отладки в юнит тестировании?

460
Реализация Матрицы C#

Реализация Матрицы C#

Вот решил перейти с С++ на С# и наткнулся на такую проблемуКак я понял, в шарпе нет шаблонов как таковых, и это компенсируется интерфейсами...

458
Точка входа в MVVM: App.xaml.cs или представление?

Точка входа в MVVM: App.xaml.cs или представление?

Начал изучать MVVM и столкнулся, как наверное и многие другие, с определенным недопониманиемВ многочисленных примерах реализации MVVM, доступных...

271