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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare Copilot con Azure Cosmos DB
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Introduzione alle Container Queries
Ottimizzazione dei block template in Angular 17
Creare una libreria CSS universale: Clip-path
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Referenziare un @layer più alto in CSS
Effettuare il refresh dei dati di una QuickGrid di Blazor
Disabilitare le run concorrenti di una pipeline di Azure DevOps