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
Gestione dell'annidamento delle regole dei layer in CSS
Creare un webhook in Azure DevOps
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Generare velocemente pagine CRUD in Blazor con QuickGrid
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Creare agenti facilmente con Azure AI Agent Service
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Generare la software bill of material (SBOM) in GitHub
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core