Se sono i valori a essere dinamici, ovvero se la query va bene per tutti i paesi ma devi usare valori diversi in base al paese, non vedo problemi di sorta: LINQ costruisce espressioni statiche su valori che puoi ottenere da dove vuoi, quindi basta codificare la logica che vada a recuperare il valore corretto da usare in base al paese, mantenendo inalterato il resto.
Se invece cambia anche l'espressione, ad esempio devi filtrare per un parametro in più e per il relativo valore per un paese, o avere meno parametri in un altro, ecco che le cose cambiano e diventano più complesse: qui potrebbe essere necessario ricorrere alla costruzione dinamica dell'espressione (es. tramite PredicateBuilder) oppure a qualcosa di esterno, ad esempio uno script, che sfrutti il DLR del .NET Framework per passare l'espressione dinamica modificabile "al volo" (es. in un file separato) costruita con un linguaggio di scripting (tipo IronPython), oppure eseguendo codice C# tramite il compilatore.
Qual è la tua necessità?