Hai molti modi per farlo. Dipende principalmente dai dati che stai cercando di abbinare.
- La prima cosa che si può fare è avere un elenco ordinato
- quindi se si conosce il valore medio della lista si può scorrere l'elenco dall'inizio della dalla fine
- , ma per lo più solo riportare il valore poiché lo hai trovato
anche i primi 2 punti funzioneranno solo se la tua lista ha qualche valore numerico su cui puoi fare affidamento per identificare un oggetto.
La prima ottimizzazione che puoi fare è:
Foreach (var item1 in List1)
{
Foreach (var item2 in List2)
{
if(item2 == item1) return item1;
}
}
Se avete veramente bisogno questa routine per essere molto veloce dovrete fare ottimizzazioni in base ai dati che è nelle vostre liste.
anche se i dati sono string
in entrambe le liste, è possibile generare un codice hash per ogni stringa (string.GetHashCode
) e poi si basano sul hascode per ordinare e ricercare negli elenchi.
Ci sono molti altri modi, ma tutto dipende da:
- la quantità di dati che avete nelle vostre liste (se hai solo 100 elementi non sarà possibile vedere un sacco di miglioramenti delle prestazioni)
- se le vostre liste sono statici o dinamici
- quanto spesso può cambiare se sono dinamici
- quanto spesso si fa a fare una ricerca in questi elenchi
- ...
controllerò se funziona – Bernardmoes
@Habib, è più veloce o sintetica? Intendo dire internamente lo stesso sminuzzamento? – tariq
@ tariq, sì, fa il loop internamente, non sono sicuro che sia più veloce, è per questo che ho fornito l'altra opzione con il codice modificato dalla domanda. – Habib