In questo articolo vedremo come con LinqToObjects possiamo eseguire delle ricerche all'interno di Collection per l'esattezza delle liste di oggetti. Le Collection implementando l'interfaccia IEnumerable danno la possibilità di eseguire delle ricerche al loro interno mediante delle query , tutto questo con l'utilizzo di Linq To Objects , dove e possibile scrivere query di ricerca e visualizzare ciò che ci interessa in base ad una determinata condizione. Come prima cosa iniziamo a creare una classe con 4 proprietà , codice prodotto, descrizione , quantità e prezzo , simuleremo l'inserimento di un ordine effettuato da un cliente e memorizzato per semplicità come detto all'interno di una lista di tipo Prodotti.

  public class Prodotti

    {

        public string Id { get; set; }

        public string Descrizione { get; set; }

        public int Quantita { get; set; }

        public double Prezzo { get; set; }

    }

Questa classe serve per poter inserire i dati necessari , dopo di che si crea  una Collection di tipo Prodotti a livello di Classe.

        private List<Prodotti> prodotti = new List<Prodotti>();

La valorizziamo in questo modo , io ho utilizzato dei valori fissi ma nulla vieta di valorizzare le proprietà della Classe Prodotti in altro modo.

 prodotti.Add(new Prodotti { Id = "1", Descrizione = "prodotto 1", Quantita = 12, Prezzo = 12.50 });

 prodotti.Add(new Prodotti { Id = "1", Descrizione = "prodotto 2", Quantita = 1, Prezzo = 1.50 });

 prodotti.Add(new Prodotti { Id = "3", Descrizione = "prodotto 3", Quantita = 23, Prezzo = 2.50 });

 prodotti.Add(new Prodotti { Id = "4", Descrizione = "prodotto 4", Quantita = 45, Prezzo = 42.50 }); 

Eseguito queste procedure le visualizzeremo per esempio in un controllo DataGrid implementando la proprietà DataSource.

 dataGridView1.DataSource = prodotti.ToArray();

Questa riga di codice visualizzerà nel controllo DataGrid tutto il contenuto della Collection Prodotti. Fin qui abbiamo visualizzato tutti i dati della lista prodotti nel controllo DataGrid , adesso arriva la parte meno semplice, come visualizzare i prodotti in base ad una selezione , per esempio visualizzare i dati di quantità e il prezzo di tutti i prodotti che anno Id uguale a 1.

Anche in questo caso ci conviene creare una classe che permetterà di visualizzare i dati dei Prodotti , esempio.

public class Dettagli

    {

        public int Quantita { get; set; }

        public double Prezzo { get; set; }

    }

Infine una semplice query linq dove in base al valore del campo Id visualizzeremo la quantità e il prezzo.

  private void button1_Click(object sender, EventArgs e)

        {

            var result = from a in prodotti

                         where a.Id == "1"

                         select new Dettagli { Quantita = a.Quantita, Prezzo = a.Prezzo };

            dataGridView2.DataSource = result.ToList();

        }

Dopo l'esecuzione della query di ricerca avremo come risultato tutti gli ordini eseguiti con Id ordine uguale a 1. LinqToObjects non si limita solamente alle keyword Where o Select utilizzate in questo esempio , ma dispone di tantissime altre keyword , per una maggiore informazione su Msdn Library si trovano esempi spiegati nel dettaglio .