You can do searching over big strings using LINQ, yes, since a string could be broken up into a collection of words, and LINQ works on collections of any type. However, if you have a lot of big strings, your search might take awhile. Here at work we use the free and open source Lucene.NET to index and search our big texts. With Lucene.NET, you can do queries over your text using AND, OR, wildcard, etc. operators, and it all performs very, very quickly. Does that answer your question? I guess I'm not sure what your question is, exactly. Maybe you want to build an expression out of your SearchWord elements and use the resulting expression as the predicate criteria over your string - is that what you want to do?