Существует ли LINQ-эквивалент List<string>.Any(), чтобы определить, содержит ли строка элемент, а также вернуть соответсC#

Место общения программистов C#
Anonymous
Существует ли LINQ-эквивалент List<string>.Any(), чтобы определить, содержит ли строка элемент, а также вернуть соответс

Сообщение Anonymous »

У меня есть список строк, которые можно считать «фильтрами».
Например:

Код: Выделить всё

List filters = new List();
filters.Add("Apple");
filters.Add("Orange");
filters.Add("Banana");
У меня есть еще один список строк, содержащий предложения.
Пример:

Код: Выделить всё

List msgList = new List();
msgList.Add("This sentence contains the word Apple.");
msgList.Add("This doesn't contain any fruits.");
msgList.Add("This does. It's a banana.");
Каждое предложение в msgList может содержать только один фрукт, поэтому «яблоки и бананы», например, невозможны. Однако фрукты могут быть во множественном числе (например, я хочу, чтобы банан соответствовал предложению, содержащему бананы).
Теперь я хочу выяснить, какие элементы в msgList содержат фрукты. Для этого я использую следующий код:

Код: Выделить всё

foreach(string msg in msgList)
{
if(filters.Any(msg.Contains))
{
// Do something.
}
}
Есть ли в LINQ способ использовать что-то похожее на List.Any(), где я могу проверить, содержит ли msgList фрукт, и, если да, также получить фрукт, соответствующий запросу?
Если я смогу получить индекс соответствия в «фильтрах», все будет в порядке. То есть для первой итерации цикла он должен возвращать 0 (индекс «Apple»), для второй итерации возвращать ноль или что-то вроде отрицательного значения, для третьей итерации он должен возвращать 2 (индекс «Банан»).

Подробнее здесь: https://stackoverflow.com/questions/405 ... ontains-an

Вернуться в «C#»