Для эффективности вы хотите выполнить как можно больше фильтрации на сервере, а затем выполнить остальную часть фильтрации на клиенте. Вы не можете использовать Regex на сервере (SQL Server не поддерживает его), поэтому решение состоит в том, чтобы сначала использовать поиск LIKE-типа (путем вызова .Contains), а затем использовать Regex на клиенте для дальнейшего уточнения результатов:
db.MyTable
.Where (t => t.MyField.Contains ("abc"))
.AsEnumerable() // Executes locally from this point on
.Where (t => Regex.IsMatch (t.MyField, @"\babc\b"))
Это гарантирует, что вы извлекаете из SQL Server только те строки, которые содержат буквы «abc» (независимо от того, совпадают ли они по границе слов или нет), и используете Regex на стороне клиента для дальнейшего ограничения набора результатов. так что включаются только совпадения, которые находятся на границах слов.