Mike was chatting to me about how you'd take something like this ( against LINQ to SQL and the Northwind database ); using (NorthwindDataContext ctx = new NorthwindDataContext() { Log = Console.Out }) { string [] values = { "A" , "B" , "C" }; var query = from c in ctx.Customers select c; foreach ( string s in values) { string t = s; // Care to avoid capturing the same value 3 times... query = query.Where(c => c.CompanyName.Contains(t)); } query.ToList(); } Console.ReadLine(); which produces; SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactT itle], [t0].[Address], [t0].[City], [t0].[Region], [t0].[PostalCode], [t0].[Coun try], [t0].[Phone], [t0].[Fax] FROM [dbo].[Customers] AS [t0] WHERE ([t0].[CompanyName] LIKE @p0) AND ([t0].[CompanyName] LIKE @p1) AND ([t0]. [CompanyName] LIKE @p2) -- @p0: Input NVarChar (Size = 3; Prec = 0; Scale = 0) [%C%] -- @p1: Input NVarChar (Size = 3; Prec = 0; Scale = 0) [%B%] -- @p2: Input NVarChar (Size = 3; Prec = 0; Scale = 0) [%A%] and write a new...