LINQ: Entity string field contains any of an array of strings

Steve Macdonald picture Steve Macdonald · Nov 18, 2009 · Viewed 53.2k times · Source

I want to get a collection of Product entities where the product.Description property contains any of the words in a string array.

It would look something like this (result would be any product which had the word "mustard OR "pickles" OR "relish" in the Description text):

Dim products As List(Of ProductEntity) = New ProductRepository().AllProducts

Dim search As String() = {"mustard", "pickles", "relish"}

Dim result = From p In products _
     Where p.Description.Contains(search) _
     Select p

Return result.ToList

I already looked at this similar question but couldn't get it to work.

Answer

Grizzly picture Grizzly · Nov 18, 2009

Since you want to see if search contains a word which is contained in the description of p you basically need to test for each value in search if it is contained in the description of p

result = from p in products
           where search.Any(val => p.Description.Contains(val))
           select p;

This is c# syntax for the lambda method since my vb is not that great