Хорошо, я знаю, что вы сказали «делай это в Линке». Поскольку, если вы говорите о том, чтобы взять нативную строку .Net и сделать это с помощью Linq to Objects, то, я думаю, наиболее очевидным решением будет разбиение текста с помощью регулярного выражения, работающего с границами слова; а затем выполнить итерацию каждого результата поиска по входным фразам.
Однако ...
Судя по вашей идее для 'v2', я думаю, вам, вероятно, стоит взглянуть на что-то более мощное и ориентированное на поиск текста - так как насчет использования Lucene.Net текстового индекса?
Он предлагает очень мощный и очень быстрый полнотекстовый поиск - и имеет возможность обрабатывать логические правила; псевдонимы, stemming, все такое прочее.
Это действительно рок.
ОБНОВЛЕНИЕ - Так как вы упомянули Linq to Sql в ваших комментариях
Вы также можете использовать полнотекстовые индексы SQL для своей таблицы, однако есть одна загвоздка: нет собственного перевода Linq To Sql в предложения CONTAINSTABLE и др.
Таким образом, вместо этого вы можете использовать динамическую генерацию запроса через строку, а затем передать ее в член DataContext.ExecuteQuery<TResult>
. Если метод select возвращает столбцы, необходимые для создания нужного вам типа объекта, он будет работать как шарм.
Или, конечно, вы можете просто обернуть хранимую процедуру, которая делает это вместо этого;)