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
Eseguire i worklow di GitHub su runner potenziati
Disabilitare automaticamente un workflow di GitHub
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Estrarre dati randomici da una lista di oggetti in C#
Utilizzare i primary constructor di C# per inizializzare le proprietà
Creare alias per tipi generici e tuple in C#
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Paginare i risultati con QuickGrid in Blazor
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Utilizzare database e servizi con gli add-on di Container App
Effettuare lo stream della risposta in ASP.NET Core tramite IAsyncEnumerable
C# 12: Cosa c'è di nuovo e interessante