Проверьте, содержит ли строка в списке определенную строку с 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"}