Существует ли 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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