In SQL la clausola IN può essere utilizzata in due modalità. La prima prevede che i dati della query padre siano filtrati in base ai risultati di una sub query.
select * from table where id in (select id from table2)
La seconda modalità prevede che la query sia filtrata in base ad una lista di valori predefinita.
select * from table where id in (1,2,3,4)
Scrivere la prima tipologia di query in Entity Framework è molto semplice in quanto basta innestare le query, mentre la seconda presenta qualche problema in più. Simulare la clausola IN di SQL con LINQ to Entities non è possibile se non scrivendo un operatore custom. La via più semplice quindi è ricorrere ad Entity SQL.
SELECT VALUE c FROM NWEntities.Customers AS c
WHERE c.CustomerID IN { 'ALFKI', 'ALLGT', 'FRETD' }Costruendo a mano lo statement, risulta molto semplice creare la stringa da una lista di id dati in input al metodo.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Mischiare codice server side e client side in una query LINQ con Entity Framework
Usare la libreria PredicateBuilder per eseguire query tramite Entity Framework che usano or su più campi
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Loggare le query più lente con Entity Framework
Eseguire query in contemporanea con EF
Mappare una complex property di una entity su un campo JSON
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Usare la parola chiave field per semplificare la scrittura di proprietà in C#


