Проверьте, содержит ли строка в списке определенную строку с Linq
У меня есть List<string>
, у которого есть такие элементы, как это:
{"Pre Mdd LH", "Post Mdd LH", "Pre Mdd LL", "Post Mdd LL"}
Теперь я хочу выполнить условие, которое проверяет, содержит ли элемент в списке определенную строку. что-то вроде:
IF list contains an item that contains this_string
Чтобы сделать это просто, я хочу проверить, если хотя бы список! содержит, например, элемент с Mdd LH
в нем.
Я имею в виду что-то вроде:
if(myList.Contains(str => str.Contains("Mdd LH))
{
//Do stuff
}
Спасибо.
Ответы
Ответ 1
Я думаю, вы хотите Any
:
if (myList.Any(str => str.Contains("Mdd LH")))
Хорошо ознакомиться с стандартными операторами запроса LINQ; Обычно я использовал те, а не конкретные для реализации методы (например, List<T>.ConvertAll
), если я действительно не был обеспокоен производительностью конкретного оператора. (Методы, специфичные для реализации, иногда могут быть более эффективными, зная размер результата и т.д.)
Ответ 2
Thast должен быть достаточно легким
if( myList.Any( s => s.Contains(stringToCheck))){
//do your stuff here
}
Ответ 3
LINQ Any() выполнит задание:
bool contains = myList.Any(s => s.Contains(pattern));
Any(), MSDN:
Определяет, удовлетворяет ли любому элементу последовательности условие
Ответ 4
Попробуйте следующее:
bool matchFound = myList.Any(s => s.Contains("Mdd LH"));
Any()
будет прекратить поиск в тот момент, когда он найдет совпадение, поэтому достаточно эффективно для этой задачи.
Ответ 5
Если вы используете Contains, вы можете получить ложные срабатывания.
Предположим, у вас есть строка, содержащая такой текст: "Мои текстовые данные Mdd LH"
Используя метод Contains, этот метод вернет true для вызова.
Подходом является использование equally operator:
bool exists = myStringList.Any(c=>c == "Mdd LH")
Ответ 6
Как переместить ("Mdd LH") в последний список, если он присутствует в этом списке. Пример вывода {"Pre Mdd LL", "Post Mdd LL", "Pre Mdd LH", "Post Mdd LH"}