Molto spesso capita di voler trovare l'indice di un determinato oggetto in una lista. Se abbiamo già l'oggetto da ricercare possiamo utilizzare il metodo IndexOf che molte liste mettono a disposizione. A volte però non abbiamo a disposizione l'oggetto bensì una query LINQ che specifica le caratteristiche dell'oggetto da ricercare. In questo script vediamo come creare un extension method che ritorna l'indice del primo oggetto che corrisponde alle caratteristiche specificate dalla query LINQ. Vediamo prima il codice.
public static int FindIndex<T>(this IEnumerable<T> items, Func<T, bool> predicate) { var result = 0; foreach (var item in items) { if (predicate(item)) return result; result++; } return -1; }
Il metodo cicla su tutti gli elementi della lista e per ognuno esegue il predicato in input. Se il predicato torna true, allora viene restituito l'indice dell'elemento, altrimenti si va avanti. Se si arriva alla fine del ciclo significa che nessun elemento ha soddisfatto il predicato e quindi viene restituito -1.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare un service principal per accedere a Azure Container Registry
Sfruttare i KeyedService in un'applicazione Blazor in .NET 8
Come EF 8 ha ottimizzato le query che usano il metodo Contains
Come migrare da una form non tipizzata a una form tipizzata in Angular
Gestire liste di tipi semplici con Entity Framework Core
Le novità di Angular: i miglioramenti alla CLI
Creare moduli CSS in React
Utilizzare Tailwind CSS all'interno di React: primi componenti
Hosting di componenti WebAssembly in un'applicazione Blazor static
Verificare la provenienza di un commit tramite le GitHub Actions
Code scanning e advanced security con Azure DevOps
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
I più letti di oggi
- Salvare una classe .NET su file con la serializzazione
- Abilitare il Session State su SQL Server
- Forzare il download di un documento da una pagina ASP.NET
- Utilizzare Themes e Skin di ASP.NET 2.0 nel rispetto degli standard
- il 12 nov a Roma c'è #FutureDecodedIT https://aspit.co/FutureDecodedIT con @gisardo, @erichgamma, @AmirNetz e @CommunityDaysIT