Utilizzando LINQ possiamo creare facilmente comandi per interrogare basi di dati SQL direttamente da codice, con tutti i vantaggi derivanti dalla type-safety e dal controllo dei parametri a tempo compilazione. In alcuni casi, tuttavia, ad esempio quando si realizza un sito Internet e, in particolare, il suo motore di ricerca interno, può capitare di dover eseguire interrogazioni su un database utilizzando una serie più o meno lunga di parametri impostati dall'utente (ad esempio, ricerca di prodotti solo in una certa categoria, con vincoli sul prezzo e sulla disponibilità, ecc.).
Questa funzionalità può essere realizzata creando manualmente la query SQL, ovvero via codice, concatenando la condizione del WHERE. Al di là del fatto che questa tecnica andrebbe comunque evitata (per i noti problemi di sicurezza), anche con LINQ è possibile utilizzare query dinamiche, anche se il relativo supporto non è incluso "di base": uno degli esempi di utilizzo di LINQ disponibili su MSDN fornisce la cosiddetta Dynamic Query Library, ovvero una serie di extension methods con cui è possibile utilizzare una stringa come argomento dell'operatore Where. Ad esempio:
var query =
db.Customers.
Where("City = @0 and Orders.Count >= @1", "London", 10).
OrderBy("CompanyName").
Select("new(CompanyName as Name, Phone)");
Gli esempi in questione possono essere scaricati qui (per C#) oppure qui (per VB .NET). Per approfondire l'argomento, consiglio di leggere questo post dell'impareggiabile Scott Guthrie.