Utilizzare i metodi Linq MinBy e MaxBy per semplificare le ricerche degli elementi minimi e massimi in liste di oggetti complessi con LINQ

di Stefano Mostarda, in LINQ, Entity Framework,

Quando abbiamo a disposizione una lista di numeri, trovare il valore più basso o quello più alto è molto semplice grazie rispettivamente ai metodi LINQ Min e Max. La cosa si complica leggermente quando abbiamo una lista di oggetti complessi e dobbiamo trovare quello che ha una proprietà che corrisponde al valore massimo o minimo. Supponiamo di avere una lista di persone e di voler trovare il più giovane. Per fare questo, dobbiamo prima ordinare la lista in base alla data di nascita (in ordinamento discendente), e poi recuperare il primo elemento.

var l = new List<Person>();
l.Add(new Person { FirstName = "Stefano", LastName = "Mostarda", BirthDate = new DateTime(2000, 1, 1) });
l.Add(new Person { FirstName = "Mario", LastName = "Rossi", BirthDate = new DateTime(2001,1, 1) });
l.Add(new Person { FirstName = "Ciro", LastName = "Esposito", BirthDate = new DateTime(2005, 1, 1) });
l.Add(new Person { FirstName = "Luigi", LastName = "Bianchi", BirthDate = new DateTime(2007, 1, 1) });

Console.WriteLine(l.OrderByDescending(c => c.BirthDate).First());

I nuovi metodi MaxBy e MinBy ci permettono di semplificare il codice concentrando in un solo metodo OrderBy e First.

Console.WriteLine(l.MaxBy(c => c.BirthDate).FirstName);

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi