Найти точно вхождение слова в списке C# .NET

Есть список содержащий текстовые данные.

Нужно каким-то образом без циклов (если это возможно) найти точное вхождение определённого слова.

Найти именно точное совпадение 100% - слова со словом в списке.


Ответы (1 шт):

Автор решения: Faraday

Можно использовать методы выборки Linq, к примеру:

List<string> strings = new List<string>() { ... };
string searchString = "smth";

string? searchItem = strings.FirstOrDefault(item => item.Contains(searchString));
if (isExists) 
{
    // ...
}

Да, как уже указали в комментариях, это код на поиск любых совпадений. Поиск на точное совпадение будет выглядеть примерно вот так:

List<string> strings = new List<string>() { ... };
string searchString = "smth";

string? searchItem = strings.FirstOrDefault(item => item == searchString);
if (isExists) 
{
    // ...
}

Вообще, если вам нужно 100% нахождение, вы можете так же использовать метод .Find(), но с ним нужно быть осторожным, по скольку он выбрасывает Exception, если не смог ничего найти:

List<string> strings = new List<string>() { ... };

string searchString = "smth";
string searchItem = string.Empty;

try
{
    searchItem = strings.First(item => item == searchString);
}
catch (Exception ex)
{
    // ...
}

Или более "традиционный способ":

List<string> strings = new List<string>() { ... };
string searchString = "smth";

bool isExists = false;
for (int i = 0; i < strings.Count; i++)
{
    if (strings[i] == searchString)
    {
        isExists = true;
        break;
    }
}

if (isExists)
{
    // ...
}
→ Ссылка