Il metodo Sum di LINQ permette di sommare il valore di una o più proprietà contenute in oggetti che si trovano in una lista. Il metodo accetta in input una lambda che torna un oggeto che deve essere di tipo numerico numerico come Int32, Int64, decimal e così via. Sebbene questo copra la quasi totalità dei casi in cui vogliamo eseguire delle somme, esistono casi in cui vogliamo sommare altri tipi di dati. Nell'esempio vediamo come creare un overload del metodo Sum che permette di sommare oggetti di tipo TimeSpan.
public static TimeSpan Sum<T>(this IEnumerable<T> source, Func<T, TimeSpan> selector) { return source.Select(selector).Aggregate(TimeSpan.Zero, (t1, t2) => t1 + t2); }
Il metodo è abbastanza semplice e lavora in due fasi. Nella prima fase scorre gli oggetti nella lista recuperando la proprietà di tipo Timespan espressa nella lambda in input. Nella seconda fare sfrutta il metodo Aggregate per sommare gli oggetti TimeSpan. Il risultato della chiamata al metdo Sum è un altro oggetto TimeSpan con la somma.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Evitare la script injection nelle GitHub Actions
Code scanning e advanced security con Azure DevOps
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Evitare il flickering dei componenti nel prerender di Blazor 8
Hosting di componenti WebAssembly in un'applicazione Blazor static
Semplificare il deployment di siti statici con Azure Static Web App
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Sfruttare al massimo i topic space di Event Grid MQTT
Applicare il versioning ai nostri endpoint ASP.NET Core Minimal API
Generare file per il download da Blazor WebAssembly
Eseguire query verso tipi non mappati in Entity Framework Core
Sfruttare i KeyedService in un'applicazione Blazor in .NET 8