Подтвердить что ты не робот

Захватите часть списка <string>

У меня есть список, похожий на этот:

some headline content
a subheadline containing the keyword 
1 2015-05-05 some data
2 2015-05-05 some data
3 2015-05-05 some data
some content
a subheadline containing another keyword 
useless stuff

Итак, теперь я хочу захватить все вещи между "ключевым словом" и "другим ключевым словом". Возможно, мне нужно найти индекс "ключевое слово" и "другое ключевое слово" и использовать .GetRange(), но есть ли более элегантный способ сделать это, например. LINQ

4b9b3361

Ответ 1

Вы можете использовать SkipWhile и TakeWhile

var newList = list.SkipWhile(line => !line.Contains("keyword"))
                  .Skip(1)
                  .TakeWhile(line => !line.Contains("another keyword"))
                  .ToList();

Ответ 2

yourList.Skip(10).Take(5);

Это пропустит 10 элементов, а затем вернет следующие 5.

Но это будет работать, только если вы уже знаете индексы ключевых слов.

Ответ 3

List<String> stringsColl=new List<String>();
strinsColl.Add(..some you strs);
...
foreach(var str in stringsColl)
{
  if(str.Contains("keyword")
   {
      ...do some work
   }
}