I know it's answered and accepted. But the bool predicate seems a little hard-coded, in terms of scaleability i.e. what if the words you wanted to remove were "Word", "Ball", and "Apple"? Now the predicate must be changed in code. I suppose you could aggregate the code in the predicate, but now things are getting silly.
You may also recognize the problem as needing a LEFT OUTER JOIN to solve it, which would accept any number of elements in the exclusion list. Here is a function you could use
Public Function getListOfWords(words As IEnumerable(Of String),
wordsToRemove As IEnumerable(Of String)) As String()
Dim wordsRemoved = From word In words
Group Join wordToRemove In wordsToRemove
On word Equals wordToRemove Into Group
From g In Group.DefaultIfEmpty
Where g = ""
Select word
Return wordsRemoved.ToArray()
End Function
And now, instead of the two-bool predicate, you can contain both sets in lists of any quantity and call the function
Dim words = {"Word", "Word", "Base", "Ball", "Ball", "Apple", "Cardinal"}
Dim wordsToRemove = {"Word", "Ball"}
Dim wordsRemoved = getListOfWords(words, wordsToRemove)
For Each s In wordsRemoved
Console.WriteLine(s)
Next