Ответ 1
Вы можете использовать SkipWhile
и TakeWhile
var newList = list.SkipWhile(line => !line.Contains("keyword"))
.Skip(1)
.TakeWhile(line => !line.Contains("another keyword"))
.ToList();
У меня есть список, похожий на этот:
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
Вы можете использовать SkipWhile
и TakeWhile
var newList = list.SkipWhile(line => !line.Contains("keyword"))
.Skip(1)
.TakeWhile(line => !line.Contains("another keyword"))
.ToList();
yourList.Skip(10).Take(5);
Это пропустит 10 элементов, а затем вернет следующие 5.
Но это будет работать, только если вы уже знаете индексы ключевых слов.
List<String> stringsColl=new List<String>();
strinsColl.Add(..some you strs);
...
foreach(var str in stringsColl)
{
if(str.Contains("keyword")
{
...do some work
}
}