Как найти первую или последнюю строку в списке по StartsWith или Содержит искомое значение без добавления в другой список
Я пытаюсь понять, какие варианты я могу использовать, чтобы получить только одну строку с Contains
или же StartsWith
первая или последняя строка, которая содержит искомое значение или начинается с него. Но без создания нового списка и взятия первой или последней строки оттуда, результат на самом деле является ответом на этот вопрос, но мне интересно, возможно ли получить его непосредственно из списка, например, если содержимое списка:
List<string> list = new List<string>()
{
"data file collection k"
"file name collection l",
"file data collection m",
"name data collection a",
"name data collection b",
"data name collection c",
"data file collection d"
};
и поиск слова:
string val = "name";
Так вот так:
foreach (string str in List)
{
if (str.StartsWith(val))
{
// ...
}
}
результат:
name data collection a
name data collection b
или если искать содержимое всей строки, например:
var mtchVal = list.Where(stringToCheck => stringToCheck.Contains(val));
результат будет:
file name collection l
name data collection a
name data collection b
data name collection c
но желаемый результат с StartsWith
должно быть:
name data collection a
и по всему содержанию:
file name collection l
2 ответа
Решение
Если разрешено linq, то
var list = new List<string>();
var first = list.FirstOrDefault(s => s.StartsWith("name"));
var last = list.LastOrDefault(s => s.StartsWith("name"));
Для StartsWith
случай, использовать
list.FirstOrDefault(stringToCheck => stringToCheck.StartsWith(val));
Для всего содержимого строки используйте
list.FirstOrDefault(stringToCheck => stringToCheck.Contains(val));