Mi sono arrovellato, senza troppa congizione di causa su come si potesse implementare una IN con Linq, ammetto di aver avuto l'aiuto dal pubblico, ma la soluzione era "facile, Facile" del resto Microsoft ci ha ben abituato a lavorare al contrario no ?
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Linq.InWorkaround { class Program { static void Main(string[] args) { // Esempio di IN List<string> ents = new List<string>(); ents.Add("Fabio Arosio"); ents.Add("Lorenzo Arosio"); ents.Add("Federico Arosio"); ents.Add("Claudio Eridani"); // creo quanto ricercare .. List<string> pattern = new List<string>(); pattern.Add("Fabio Arosio"); pattern.Add("Claudio Eridani"); Console.WriteLine("Esempio di IN"); // basta utilizzare la contains al contrario var r = ents.Where(e => pattern.Contains(e)); foreach (string s in r) { Console.WriteLine(s); } Console.ReadKey(); Console.WriteLine("\n\rEsempio di Like"); // Questa è la Like var r1 = ents.Where(e => e.Contains("Arosio")); foreach (string s in r1) { Console.WriteLine(s); } Console.ReadKey(); } } }
Bene non è difficile il tutto si basa sul "chi contiene cosa" generalmente quando in SQL utilizziamo la IN è per identificare una serie di valori per il cui il nostro campo può variare, con LINQ la situazione è inversa dato che la sintassi vera e propria non esiste. Quindi creiamo un set, e chiediamo se il campo è contenuto in quel range.
Nessun commento:
Posta un commento