Кажется, вы ищете целое слово соответствие; то есть "foo"
не соответствует "fooX, fooY);"
, поскольку у нас есть fooX
и fooY
целых слов * только 1010 *.
если это ваш случай, вы можете используйте регулярные выражения :
using System.Text.RegularExpressions;
...
var matches = allStrings
.Where(cmd => Regex.IsMatch(stringToCheck, $@"\b{Regex.Escape(cmd)}\b"))
.ToList();
Редактировать: Если allStrings
и stringToCheck
длинные и все элементы allStrings
гарантированно состоят из Только буквы ..z, вы можете попробовать более быстрое решение - разбить stringToCheck
на words
:
HashSet<string> words = new HashSet<string>(Regex.Split(stringToCheck, @"\W"));
, а затем проверить эти предварительно вычисленные значения words
:
var matches = allStrings
.Where(cmd => words.Contains(cmd))
.ToList();