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 le Cache API di JavaScript per salvare elementi nella cache del browser
Sostituire la GitHub Action di login su private registry
Trasformare qualsiasi backend in un servizio GraphQL con Azure API Management
Utilizzare i primary constructor di C# per inizializzare le proprietà
.NET Conference Italia 2023
Generare file PDF da Blazor WebAssembly con iText
Utilizzare Tailwind CSS all'interno di React: installazione
Configurare dependabot per aggiornare le dipendenze di terze parti con GitHub Actions
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Gestire i null nelle reactive form tipizzate di Angular
Mascherare l'output di un valore all'interno dei log di un workflow di GitHub
Utilizzare la versione generica di EntityTypeConfiguration in Entity Framework Core